У мене є сітка Kendo, і я встановив, що джерело даних використовує це
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Read(read => read.Action("GetWorker", "Worker"))
У мене на сторінці є кнопка, і я хочу змінити джерело даних, коли натискаю цю кнопку (використовую сценарій Java). Я хочу зробити щось подібне
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Read(read => read.Action("GetDisabled", "Worker"))
Я намагаюся робити це так
var grid = $("grid").data("kenodGrid");
grid.dataSource().read()
але я не знаю, що робити після grid.dataSource (). як я можу змінити джерело даних? Тонки та сподівання на допомогу
Відповіді:
34 за відповідь № 1Думаю, спочатку слід створити новий джерело даних (див 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 для відповіді № 2
Оскільки ви хочете змінити дію для свого прочитаного, ви можете просто зробити це. Згідно з це питання ви можете просто встановити URL-адресу зчитування даних та оновити дані вашої сітки таким чином:
var grid = $("#grid").data("kendoGrid");
grid.dataSource.transport.options.read.url = "newUrlPath";
grid.dataSource.read();
grid.refresh();
Якщо ви насправді не хочете змінити своєdataSource, але ваші дані і, можливо, отримаєте ваш список елементів із якогось запиту на 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;
}