/ / Cambia la griglia di kendo Utilizza Datasource JS - javascript, asp.net-mvc, kendo-ui, kendo-grid, kendo-asp.net-mvc

Cambiare la griglia di kendo Utilizzo di Datasource JS - javascript, asp.net-mvc, kendo-ui, kendo-grid, kendo-asp.net-mvc

Ho una griglia di Kendo e ho impostato la fonte dei dati per usarlo

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

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

Ho un pulsante sulla mia pagina e voglio cambiare origine dati quando premo questo pulsante (usa lo script java). Voglio fare qualcosa di simile

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

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

Cerco di fare così

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

ma non so cosa fare dopo grid.dataSource (). Come posso cambiare l'origine dei dati? Thnaks e speranza per il tuo aiuto

risposte:

34 per risposta № 1

Penso che dovresti prima creare un nuovo DataSource (vedi http://demos.kendoui.com/web/datasource/remote-data.html per dati remoti)

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

E quindi aggiungerlo alla griglia usando il metodo setDataSource (http://docs.kendoui.com/api/web/grid#methods-setDataSource)

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

2 per risposta № 2

Dal momento che vuoi cambiare l'azione per la tua lettura, puoi farlo. Secondo questa domanda puoi semplicemente impostare l'url DataSource Read e aggiornare i dati della griglia con qualcosa del genere:

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

Se in realtà non vuoi cambiare la tuadataSource ma i tuoi dati e possibilmente ottenere il tuo elenco di elementi da qualche richiesta Ajax come JSON poi scriverò il modo in cui lo faccio come un esempio nel caso in cui qualcuno lo vuole.

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

La funzione è simile a quanto sopra

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