重置Kendo Grid列

时间:2016-11-15 20:10:06

标签: jquery kendo-ui kendo-grid

我有这样的kendo Grid列:

 $("#lstCategory").kendoGrid({
        dataSource: {
            data: info,
            autoSync: true,
            schema: {
                model: {
                    fields: {
                        category: { editable: false, type: "string" },
                        subCategory: { editable: false, type: "string" }
                    }
                }
            },
            pageSize: 7,
            group: {
                field: "category",
                aggregates: [
                    { field: "category", aggregate: "count" }
                ]
            }
        },
        sortable: true,
        scrollable: false,
        pageable: true,
        editable: true,
        columns: [
            { field: "category", title: "Categoría", aggregates: ["count"], groupFooterTemplate: "Total: #=count#" },
            { field: "subCategory", title: "Subcategoria" },
            { command: "destroy", title: "", width: "150px" }

        ]
    });
}

我在那里添加了后期操作的字段。问题是我想在帖子后重置此网格以刷新它并插入另一个值我尝试使用下一个命令:

   $("#lstCategory").empty(); // this one dissapear kendo grid
   $('#lstCategory').data('kendoGrid').refresh();
   $('#lstCategory').data().kendoGrid.destroy();

但是他们没有一个在帖子后冲我的剑道,那可能是什么问题?

更新

尝试恐惧海盗回答:

在发布后,我发送此信息:

  var grid = $("#lstCategory").getKendoGrid();
                    var info = refeshInfoFromServer();
                    grid.dataSource.data(info);

function refeshInfoFromServer() {
    return $("#lstCategory").data("kendoGrid").dataSource.read();
}

它似乎工作,但我的页面卡在加载。 Google Chrome Inspector返回

  

kendo.all.min.js:11 Uncaught TypeError:e.slice不是函数

1 个答案:

答案 0 :(得分:1)

您希望在发布后从服务器重新读取网格数据吗?

grid.refresh()只会将网格重新绑定到当前的dataSource ...它不会强制从服务器重新读取底层的dataSource。 http://docs.telerik.com/kendo-ui/api/javascript/ui/grid#methods-refresh

通常要强制网格再次访问服务器的目的是使用基础dataSource的read()方法(http://docs.telerik.com/kendo-ui/api/javascript/data/datasource#methods-read),即:

$("#lstCategory").data("kendoGrid").dataSource.read();

但是,如果dataSource绑定到远程读取端点,这只会命中服务器,否则它只是重新读取本地数组...您的dataSource的数据来自名为“info”的神秘变量,这可能是一个已经取得的数组,是吗?

在这种情况下,您需要首先强制刷新info数组(通过执行您第一次填充它所做的任何事情)然后使用新数据更新网格的dataSource,然后重新绑定网格。

这样的事情:

// Do Post or whatever...
var grid = $("#lstCategory").getKendoGrid();
info = refeshInfoFromServer();
grid.dataSource.data(info);
//grid.refresh(); // NOTE: not necessary as .data(info) will automatically do rebind to the grid it belongs to.automatically do this.

使用虚假数据进行演示:http://dojo.telerik.com/@Stephen/aGAQo