更改kendo网格Datasource使用JS

时间:2013-05-27 13:36:08

标签: 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()之后该怎么做。我该如何更改数据源? Thnaks,希望对你有帮助

2 个答案:

答案 0 :(得分:39)

我认为您应首先创建一个新的DataSource(请参阅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);

答案 1 :(得分:2)

由于您想要更改您的阅读操作,因此您可以这样做。 根据{{​​3}},您可以设置dataSource读取URL并使用类似的内容刷新网格数据:

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

如果你实际上并不想更改你的dataSource而是你的数据,并且可能从json的某个ajax请求中获取你的项目列表,那么我会记下我的方式作为一个例子,以防有人想要它。 / p>

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