/ / Змінити кендо-сітку Використання джерела даних JS - javascript, asp.net-mvc, kendo-ui, kendo-grid, kendo-asp.net-mvc

Змінити kendo grid Datasource використовувати JS - javascript, asp.net-mvc, kendo-ui, kendo-grid, kendo-asp.net-mvc

У мене є сітка 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;
}