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

Oracle APEX交互式网格:跨筛选保留行选中状态的实现方案咨询

解决Oracle APEX交互式网格筛选后选中状态丢失问题

方案一:通过PL/SQL查询预设选中状态

这种方式需要先存储用户选中的行ID,再在查询中标记选中状态,让交互式网格加载时自动选中对应行。

  • 存储选中行ID:创建一个隐藏页面项(比如P1_SELECTED_IDS,类型设为“隐藏”,分隔符用逗号),用于保存用户选中的行主键ID集合。同时创建动态动作,当交互式网格行选择变化时,用JS把选中行的ID更新到这个页面项中(代码参考方案二的第一步)。
  • 修改PL/SQL查询:在交互式网格的数据源查询中,新增一个计算列标记选中状态,示例如下:
    SELECT 
        t.*,
        CASE 
            WHEN :P1_SELECTED_IDS IS NOT NULL AND t.id IN (SELECT column_value FROM apex_string.split(:P1_SELECTED_IDS, ',')) 
            THEN 'Y' 
            ELSE 'N' 
        END AS is_selected
    FROM your_table t
    WHERE t.category = :P1_CATEGORY;
    
  • 配置交互式网格选中规则:进入交互式网格的属性面板,找到“选择”→“选中列”,将其设置为新增的is_selected列,这样网格加载时会自动将标记为Y的行设为选中状态。
  • 注意事项:如果用户跨会话操作,建议用APEX_COLLECTION替代页面项存储选中ID,避免页面刷新或会话过期导致数据丢失。

方案二:通过动态动作恢复选中状态

如果不想修改PL/SQL查询,可通过JS动态动作在筛选后重新选中之前的行。

  • 第一步:保存选中行ID
    创建动态动作,触发条件为“交互式网格 - 行选择变化”,执行JavaScript代码收集选中行ID并保存到隐藏页面项:
    // 替换ig_static_id为你的交互式网格静态ID,ID为表主键列名
    var ig = apex.region("ig_static_id").widget();
    var selectedRecords = ig.interactiveGrid("getViews", "grid").model.getSelectedRecords();
    var selectedIds = selectedRecords.map(record => record[ig.model.getFieldKey("ID")]).join(",");
    apex.item("P1_SELECTED_IDS").setValue(selectedIds);
    
  • 第二步:筛选后恢复选中状态
    创建另一个动态动作,触发条件为“选择列表 - 值变化”(即切换类别的选择列表),执行时机设为“交互式网格刷新后”,执行以下JavaScript代码:
    // 替换ig_static_id为你的交互式网格静态ID,ID为表主键列名
    var ig = apex.region("ig_static_id").widget();
    var selectedIds = apex.item("P1_SELECTED_IDS").getValue().split(",");
    
    if (selectedIds.length > 0 && selectedIds[0] !== "") {
        var gridView = ig.interactiveGrid("getViews", "grid");
        var model = gridView.model;
        
        model.forEach(record => {
            var rowId = record[model.getFieldKey("ID")].toString();
            if (selectedIds.includes(rowId)) {
                model.selectRecord(record);
            }
        });
    }
    
  • 注意事项:如果交互式网格开启了分页,只有当前页存在的选中行才能被恢复选中,不在当前页的行无法显示选中状态,这种情况下建议结合方案一使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 13:47:13