22

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

.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() 之后该做什么。如何更改数据源?Thnaks 并希望对您有所帮助

4

2 回答 2

42

我认为您应该首先创建一个新的数据源(有关远程数据,请参见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);
于 2013-05-28T11:20:42.913 回答
4

既然你想改变你的阅读动作,那么你就可以这样做。根据这个问题,您可以设置 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;
}
于 2017-10-18T14:07:04.607 回答