Изменение сетки kendo Использование источника данных JS - программирование
Подтвердить что ты не робот

Изменение сетки kendo Использование источника данных JS

У меня есть сетка Kendo, и я установил источник данных, используя этот

.DataSource(dataSource => dataSource
                                .Ajax()
                                .PageSize(20)

                                .Read(read => read.Action("GetWorker", "Worker"))

У меня есть кнопка на моей странице, и я хочу изменить источник данных, когда я нажимаю эту кнопку (используйте java script). Я хочу сделать что-то вроде этого

.DataSource(dataSource => dataSource
                                .Ajax()
                                .PageSize(20)

                                .Read(read => read.Action("GetDisabled", "Worker"))

Я пытаюсь сделать это

var grid = $("grid").data("kenodGrid");
            grid.dataSource().read()

но я не знаю, что делать после grid.dataSource(). как я могу изменить источник данных? Thnaks и надеюсь, что вы поможете

4b9b3361

Ответ 1

Я думаю, вы должны сначала создать новый DataSource (см. http://demos.kendoui.com/web/datasource/remote-data.html для удаленных данных)

var dataSource = new kendo.data.DataSource({
    data: [
        { name: "John Doe", age: 33 }
    ]
});

Затем добавьте его в сетку с помощью метода setDataSource (http://docs.kendoui.com/api/web/grid#methods-setDataSource)

var grid = $("#grid").data("kendoGrid");
grid.setDataSource(dataSource);

Ответ 2

Поскольку вы хотите изменить действие для своего чтения, вы можете просто сделать это. В соответствии с этот вопрос вы можете просто установить URL-адрес ReadSource и обновить данные сетки примерно следующим образом:

var grid = $("#grid").data("kendoGrid");
grid.dataSource.transport.options.read.url = "newUrlPath";
grid.dataSource.read();
grid.refresh();

Если вы на самом деле не хотите менять свой источник данных, но ваши данные и, возможно, получаете свой список элементов из какого-либо запроса ajax в качестве json, тогда я напишу, как это сделать в качестве примера, если кто-то захочет его.

var jsonData = ... // From some ajax response
var newKendoDatasource = newKendoDS(jsonData);
$("#grid").data("kendoGrid").dataSource.data(newKendoDatasource._data);

Функция аналогична приведенной выше.

function newKendoDS(ndata) {
    var datasource = new kendo.data.DataSource({ data: ndata });
    datasource.read(); // In order to refresh
    return datasource;
}