Apex中如何通过按钮选中Interactive Grid特定行或全部行?
问题描述
页面中有一个Interactive Grid类型的区域,通过行选择器生成复选框,表格包含ColumnA、ColumnB、ColumnC三列,数据如下:
| ColumnA | ColumnB | ColumnC |
|---|---|---|
| 1 | Hello | 123 |
| 2 | Position | 1234 |
| 3 | Accept | 567 |
| 4 | Position | 778 |
| 5 | Accept | 321 |
已创建两个按钮,需要实现以下功能:
- 点击「Position」按钮:自动选中
ColumnB值为「Position」的所有行的复选框,预期效果如下:
| Checkbox | ColumnA | ColumnB | ColumnC |
|---|---|---|---|
| 1 | Hello | 123 | |
| X | 2 | Position | 1234 |
| 3 | Accept | 567 | |
| X | 4 | Position | 778 |
| 5 | Accept | 321 |
- 点击「Accept」按钮:选中所有行的复选框。
尝试过以下代码,但仅能实现全选,无法筛选特定行:
apex.region("pos").widget().interactiveGrid("getViews", "grid").view$.grid("selectAll");apex.message.showPageSuccess( "All Rows selected successfully." );}
解决方案
1. 「Position」按钮的实现代码
通过遍历Interactive Grid的所有行模型,判断ColumnB的值后选中符合条件的行:
// 替换为你的Interactive Grid区域静态ID const igRegionId = "pos"; const ig = apex.region(igRegionId).widget().interactiveGrid("getViews", "grid"); // 先清空当前选中状态,避免叠加选中 ig.view$.grid("clearSelection"); // 获取所有行的数据模型 const rows = ig.model.getRows(); // 遍历行,筛选并选中ColumnB为"Position"的行 rows.forEach(row => { // 替换为ColumnB列的静态ID(需与页面配置一致) const columnBValue = ig.model.getValue(row, "COLUMNB"); if (columnBValue === "Position") { ig.view$.grid("select", row); } }); apex.message.showPageSuccess("已选中所有ColumnB为Position的行");
2. 「Accept」按钮的实现代码
修正你原有的代码(移除多余的闭合括号),即可实现全选:
// 替换为你的Interactive Grid区域静态ID const igRegionId = "pos"; const ig = apex.region(igRegionId).widget().interactiveGrid("getViews", "grid"); ig.view$.grid("selectAll"); apex.message.showPageSuccess("所有行已成功选中");
注意事项
- 确保
igRegionId替换为你页面中Interactive Grid区域的静态ID(你的示例中用的是pos)。 COLUMNB是ColumnB列的静态ID,需与你在Apex中配置列时设置的静态ID一致,否则无法正确获取列值。
内容的提问来源于stack exchange,提问作者Itsme mylife
相关产品推荐
相关产品推荐

