将现有的剑道网格绑定到新的 JSON 对象

Binding existing Kendo grid to a new JSON object

本文关键字:JSON 对象 绑定 网格      更新时间:2023-09-26

我的页面上有以下kendoGrid,加载时从指定的URL接收JSON对象。

但稍后我想将其绑定到从其他来源接收的其他一些JSON数据。有没有办法将包含网格的现有数据与新的JSON对象绑定刷新?

$('#grid').kendoGrid({
    sortable: true,
    groupable: true,
    scrollable: true,
    pageable: {
        pageSizes: 9
    },
    dataSource: {
        transport: {
            read: {
                url: "../Get/JsonData",
                dataType: "Json"
            }
        }
    },
    columns: [
        { field: "name", title: "Name", width: 100 },
        ... ...
    ]
});

您可以将数据源中的所有数据替换为:

var newData = [ "some", "data", "array" ];
var gridWidget = $('#grid').data("kendoGrid");
gridWidget.dataSource.data(newData);

或者你可以给网格一个全新的数据源(我推荐这种方法):

var newData = new kendo.data.DataSource({
    data: [ "some", "data", "array" ]
});
var gridWidget = $('#grid').data("kendoGrid");
gridWidget.setDataSource(newData);

当然,在我的示例中newData只是从函数返回的任何数据。

新 JSON 的结构是否相同(相同的列和相同的数据模型)?如果是这样,那么是的,只需使用 transport.readtransport.read.url,而不是将其定义为string将其定义为返回一个或另一个的函数。

请记住,transport.read可能是对象或函数。同样的情况也发生在transport.read.url