14

У меня есть кендо сетка и я устанавливаю использовать источник данных этоИзменить использование кендо сетки Datasource JS

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

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

У меня есть кнопки на моей странице, и я хочу изменить источник данных при нажатии этой кнопки (используйте Java Script). Я хочу, чтобы сделать somwthing как этот

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

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

Я стараюсь делать как этот

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

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

ответ

33

Я думаю, вы должны сначала создать новый источник данных (см 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); 
0

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

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; 
} 
Смежные вопросы