繁体   English   中英

如何在Kendo-UI网格上更新数据并使用Angular保持层次结构选择?

[英]How do I update data on Kendo-UI grid and persist hierarchy selection using Angular?

我有一个带有绑定到RESTful API的kendo网格的Angular单页应用程序。 当从外部更新此数据时,我将触发一个Web套接字(PubNub)函数,以刷新和显示外部更改的数据,同时保留网格的层次结构以及所选行。

我可以刷新数据网格,但这不会使用API​​中更改的数据刷新数据源。 如果我包含一个dataSource.read(),则似乎阻止了我对层次结构的持久性,即IE将关闭以前打开的层次结构网格。

我尝试使用Telerik Docs中的示例来列出此示例: 刷新后坚持扩展行

vm.savestate = function(e) {

        console.log('save pressed:');
        var grid = $scope.responseGrid;
        var expanded = $.map(grid.tbody.children(":has(> .k-hierarchy-cell .k-minus)"), function(row) {

            console.log(row);
            console.log($(row).data("uid"));
            return $(row).data("uid");

        });

        grid.one("dataBound", function() {
            grid.expandRow(grid.tbody.children().filter(function(idx, row) {
                return $.inArray($(row).data("uid"), expanded) >= 0;
            }));
        });

         grid.refresh();


    };

实际上,解决方案非常简单。 您不能使用uid,因为它是在可观察数组的每次新读取时生成的。 正确的选择是使用模型ID作为以下示例:

vm.savestate = function(e) {

    console.log('save pressed:');
    var grid = $scope.responseGrid;
    var expanded = $.map(grid.tbody.children(":has(> .k-hierarchy-cell .k-minus)"), function(row) {

        console.log(row);
        console.log($(row).data("uid"));
        return grid.dataItem($(row)).EmployeeID; //Use Model Data instead of uid

    });

    grid.one("dataBound", function() {
        grid.expandRow(grid.tbody.children().filter(function(idx, row) {
            return $.inArray(grid.dataItem($(row)).EmployeeID, expanded) >= 0;//Use Model Data instead of uid
        }));
    });

     grid.refresh();


};

感谢Telerik支持团队的答复。 这是他们的更新后的示例,其中介绍了在需要dataSource.read()时, 如何在刷新 Kendo-UI网格后保留扩展行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM