You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ExtJS 7.4 Modern版本表格开启多选后如何获取全部选中行数据

核心原因说明

你遇到的getSelection()仅返回单行的问题,根源是Ext JS Modern版Grid的selectable配置默认是单选模式,哪怕开启了checkbox选择框,默认也不会自动开启多选能力,这一点和Classic版逻辑不同。同时Modern版确实已经移除了getSelectionModel()相关API,不需要再使用该方法获取选中数据。


第一步:修正Grid的selectable配置

在现有selectable配置中新增mode: 'multi'开启多行选中,修正后的完整配置如下:

Ext.define("app.view.grid.MyGrid", {
  extend: "Ext.grid.Grid",
  xtype: "app.MyGrid",

  viewModel: "Grid",

  selectable: {
    rows: true,
    checkbox: true,
    // 新增这行配置开启多选模式
    mode: 'multi'
  },
});

第二步:获取所有选中行数据

配置生效后,直接调用Grid实例的getSelection()方法即可返回所有选中行的Record对象数组:

// 这里的grid是你获取到的Grid组件实例
const selectedRecords = grid.getSelection();

// 遍历获取每行原始数据的示例
selectedRecords.forEach(record => {
  console.log('行数据:', record.getData());
});

补充:实时监听选中变化

如果需要在选中/取消选中时实时获取选中数据,可以给Grid添加selectionchange事件监听:

Ext.define("app.view.grid.MyGrid", {
  extend: "Ext.grid.Grid",
  xtype: "app.MyGrid",
  // 其他配置省略
  listeners: {
    selectionchange: function(grid, selectedRecords) {
      // selectedRecords就是当前所有选中的行数组
      console.log('当前选中行数:', selectedRecords.length);
    }
  }
});

内容的提问来源于stack exchange,提问作者RynnHeldeD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 12:54:06