如何使用新的dataSource重新初始化Kendo网格

时间:2014-06-25 21:44:43

标签: angularjs kendo-ui

我正在使用Angular和Kendo UI在asp.net mvc3中工作。

我正在慢慢地创建某种通用网格来处理我将要获得的各种数据响应。

在之前的框架中,我们会在重新初始化之前使用$("#mainGrid").data("kendoGrid").destroy()。但是,在Angular控制器中,我无法弄清楚如何使用更新的DataSource(新架构和数据)销毁/重新创建我的网格。

这是我的通用网格功能:

 function initHierarchyGrid_Generic(reportType, data, refresh) {            

        var myModel = gridHierarchyService.getDataSourceModel(reportType, data);
        var myColumns = gridHierarchyService.getColumnDefs(reportType, data);
        var myData = gridHierarchyService.getDataRows(reportType, data);

        var ds = new kendo.data.DataSource({
            schema: {
                model: myModel
            },
            pageSize: 5,
            data: myData
        });
        ds.read();

        vm.mainHierGridOptions = {
            dataSource: ds,
            pageable: true,
            detailInit: detailInit,  // detailInit() determines nested levels.                      
            columns: myColumns
        };           

        if (refresh) {     // NEW LOGIC TO REFRESH THE DATASOURCE (as per suggestion)
            var grid = $('#mainGrid').data("kendoGrid");
            grid.setDataSource(ds);
        }

        return vm.mainHierGridOptions;
    }

感谢您的帮助。

的问候, 鲍勃

更新:   我现在传入一个刷新参数,并使用grid.setDataSource(ds);触发网格更新。 它确实更新了网格,但我的网格现在是空的。我怀疑这是一个与数据相关的问题。

Renders with bad data display (my data is correct though)

在这种情况下如果我在html中使用k-bind =“vm.mainHierGridOptions”,如下所示,那么Chrome会出现错误的$ digest迭代错误:

$digest iterations error

1 个答案:

答案 0 :(得分:1)

最好使用ds.data(yournewdata)调用重新初始化数据。我不确定如何更改架构。