如何从Kendo Grid所有分页中获取选中行数据?
从Kendo Grid全分页中获取选中数据的无模板实现方案
问题背景
需要实现从Kendo Grid的所有分页中获取选中数据的ID——比如在第1页选1条、第2页选1条,点击「获取选中行」按钮时能拿到这些选中项的ID。目前现有代码只能获取当前页的选中数据,想知道有没有无需创建复选框模板/额外ID字段的实现方式。
现有单页选中数据获取代码:
var grid = $("#grid").data("kendoGrid"); var selectedRows = grid.select(); selectedRows.each(function(index, row) { var selectedItem = grid.dataItem(row); alert(selectedItem.ProductID); });
无模板实现方案
Kendo Grid原生提供了selectedKeyNames()方法,可直接获取所有分页中选中行的主键值,无需自定义复选框模板,前提是已配置好Grid的选中规则与数据主键。
实现代码
// 获取Grid实例 var grid = $("#grid").data("kendoGrid"); // 获取所有分页中选中行的主键ID数组 var allSelectedIds = grid.selectedKeyNames(); // 输出或使用这些ID console.log("所有选中项ID:", allSelectedIds);
关键配置要求
要让该方法正常生效,必须确保Grid的两个核心配置:
- 初始化Grid时设置
selectable: "multiple, row",开启多行选中功能 - 在Grid的
dataSource.schema.model中指定主键字段,示例:dataSource: { schema: { model: { id: "ProductID" // 对应数据中的主键字段名 } } // 其他dataSource配置(如数据源、分页设置等) }
原理说明
selectedKeyNames()方法会自动跟踪所有分页内用户选中的行,通过主键维护跨分页的选中状态,切换分页时不会丢失之前的选中记录,调用时直接返回所有选中行的主键数组,完全不需要额外的模板或ID处理逻辑。
内容的提问来源于stack exchange,提问作者dontbannedmeagain
相关产品推荐
相关产品推荐

