[英]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.