首页 > 解决方案 > Apex 分面搜索自动生成行 nuber

问题描述

我正在尝试在我的报告中添加一列“数字”,到目前为止我所能做的就是使用 row_number()

select row_number over (order by date_a) as N, id, date_a
from my_table
order by date_a

问题是当我开始使用分面搜索(这是必不可少的)时,当然不会再次生成数字,所以我得到这样的结果

n 日期_a
33 2020 年 1 月 1 日
150 2020 年 3 月 2 日
491 2020 年 2 月 4 日
647 2020 年 8 月 6 日

那么有没有办法在每个过滤器或java脚本之后自动生成行号以从客户端生成数字

标签: oracle-apex

解决方案


你不能开箱即用。分面搜索功能发生在客户端上,因此您必须使用 javascript 生成行号。此外,当用户执行任何导致多面搜索结果刷新的操作时,必须重新计算行号。

我得到这个工作做以下。对于我的示例,我使用了示例 emp 表,查询SELECT * FROM emp作为源。

  • “搜索结果”区域的静态 ID:fs-report
  • 将派生列添加到报表以显示生成的行号。就我而言,这是第一列。
  • 在页面属性中,在“函数和全局变量声明”下,创建以下函数:
function resequenceEmpTab(){
    let table = document.getElementById('report_table_fs-report');
    console.log('x');
    for(var i = 1; i < table.rows.length; i++)
    {
        {
            //set the value of the first column to i
            table.rows[i].cells[0].innerHTML = i;
        }
    }         
}
  • 在页面属性中,在“页面加载时执行”下,添加以下代码:
resequenceEmpTab();
  • 创建动态动作,事件:“刷新后”,选择类型:“区域”,区域:“搜索”。将事件范围设置为“动态”。
  • 添加“执行 Javascript 代码”类型的真实操作和源
resequenceEmpTab();

在 apex 20.2 实例上验证了这一点。


推荐阅读