使用JS更改剑道网格数据源

Change kendo grid Datasource use JS

本文关键字:网格 数据源 JS 使用      更新时间:2023-09-26

我有剑道网格,我设置数据源使用这个

.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()之后该怎么办。如何更改数据源?谢谢你的帮助

我认为你应该首先创建一个新的数据源(参见https://demos.telerik.com/kendo-ui/datasource/remote-data-binding远程数据)

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

然后使用setDataSource方法(https://docs.telerik.com/kendo-ui/api/javascript/ui/grid/methods/setdatasource)将其附加到网格

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

既然你想改变你的阅读动作,那么你可以这样做。根据这个问题,你可以设置dataSource Read url并刷新你的网格数据,如下所示:

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;
}