如何使用Angular更新Kendo-UI网格上的数据并持久化层级选择?
How do I update data on Kendo-UI grid and persist hierarchy selection using Angular?
我有一个Angular单页应用,它有一个剑道网格,绑定到一个RESTful API。当这些数据在外部更新时,我有一个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 Grid后持久化展开的行。
相关文章:
- 下拉选择可自动更改第二个下拉选择
- 如何使用jQuery选择下拉列表的值
- jquery点击函数select&取消选择
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 按照选项卡索引的顺序循环一个jQuery选择
- 在动态创建的元素上获取对特定选择器的引用
- AngularJS-在JSON选择器中使用变量名
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 获取选择框的状态
- d3基于用户选择动态更新节点
- 提交后保留下拉选择的值
- JQuery对动态创建的对象进行选择
- 无法在Ionic select中预先选择最后一个选项
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- jQuery自动完成阻止选择后聚焦
- 使用此选项选择父类内部的类
- jQuery最近父级的数据属性选择器
- 如何使用Angular更新Kendo-UI网格上的数据并持久化层级选择?
- 在.load上计算两个持久化的引导选择值
- 将属性设置为选择不持久化