【发布时间】:2019-01-22 14:01:57
【问题描述】:
我有带有本地数据、复选框和分页的 Kendo 网格。我在所有页面上使用 selectedKeynames() 获取所有检查项目 ID。 如何获取所有页面中已检查 iem 的数据项?
【问题讨论】:
我有带有本地数据、复选框和分页的 Kendo 网格。我在所有页面上使用 selectedKeynames() 获取所有检查项目 ID。 如何获取所有页面中已检查 iem 的数据项?
【问题讨论】:
如果您使用 Kendo 进行分页、排序等,而不是在服务器上处理这些操作,那么除了浏览数据源中的元素列表之外似乎没有其他方法。像这样的:
var g = $("#grid").getKendoGrid();
var d = g.dataSource.data();
var s = g.selectedKeyNames();
var r = [];
for (var i = 0; i < d.length; i++) {
if (s.indexOf(d[i].Id) >= 0) {
r.push(d[i]);
}
}
【讨论】:
这是一个可能的解决方案。
请查看以下道场:https://dojo.telerik.com/ibALanIX
与其他解决方案一样,我正在获取数据,但在所选项目上使用 forEach 循环,因为当您开始拥有大量记录时,for 循环可能需要一些时间。
所以我要做的就是检查选定的项目,然后从选定的列表中抓取这些项目。
var grid = $("#rowSelection").data('kendoGrid');
var selectedItems = grid.selectedKeyNames();
var actualItems = [];
if (selectedItems.length > 0) {
selectedItems.forEach(function(key) {
actualItems.push(grid.dataSource.get(key));
});
}
这将减少您必须执行的循环次数,并且您知道选择中的键是什么,然后这仅使用 kendo DataSource 的默认 get 方法,该方法映射到模型中的 ID数据源架构。
【讨论】: