Изменение сетки 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 и надеюсь, что вы поможете
Ответы
Ответ 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;
}