交互式网格中的默认排序顺序

问题描述 投票:0回答:3

我有一个交互式网格,我希望网格在顶部显示最新的日期记录。但是,Interactive Grid 不支持 SQL 中的 Order by。

有什么方法可以让我默认应用这些排序,而不是用户需要自己对这些报告进行排序?

此外,我不想作为开发人员使用“保存报告”,因为我们的应用程序中有超过 400 个报告。有没有一种可编程的方法来实现这个?

oracle-apex oracle-apex-5.1
3个回答
6
投票

您可以使用

WITH
子句从 IG 中“隐藏”
ORDER BY
子句。

假设您的选择是:

select emp_id, name, date from employees

并且您想在交互式网格的 SQL 中使用

order by
子句,只需将其复制到以下内容中即可:

 WITH my_sel AS 
  (SELECT emp_id, name, date 
     FROM employees
   ORDER BY date DESC)

SELECT emp_id, name, date
  FROM my_sel;

更多示例此处

要处理非表情况(视图、集合、json_table...)的数据操作,请更改交互式网格的进程区域名称 - 保存交互式网格数据”,并在此过程的设置下选择“PL/SQL 代码” 作为 “目标类型”,然后将类似这样的内容放入:

IF :apex$row_status = 'I' THEN

  -- your insert statements 
  INSERT INTO employees(emp_id, name, date) 
         VALUES (:EMP_ID, :NAME, :DATE); -- names of IG columns

ELSIF :apex$row_status = 'U' THEN

  -- your update statements
  UPDATE employees 
     SET name = :NAME,
         date = :DATE
   WHERE emp_id = :EMP_ID;

ELSIF :apex$row_status = 'D' THEN

  -- your delete statements
  DELETE employees
   WHERE emp_id = :EMP_ID;

END IF;

确保在构成数据集唯一键的列上启用主键。否则它不会定位正确的行。各种案件都可以这样处理。


2
投票

手动,您可以:

  • 打开 Oracle APEX Builder 并确保您以开发人员身份登录
  • 在浏览器中使用交互式网格运行页面并使用相同的凭据登录
  • 对一列(或多列)应用订单
  • 点击“操作”->“报告”->“保存”
  • 您应该看到确认信息“为所有用户保存默认报告”

以编程方式,您不能:

在 APEX 20.1 中,有一个可用的 PL/SQL API,APEX_IG。但目前它不包含您正在寻找的功能..

新功能可能会在 APEX 的未来版本中添加,但这只是猜测,肯定不是您现在可以使用的功能。


0
投票

按列排序:

01. Click the Actions menu, select Data, then Sort. The Sort dialog appears.

02. In the Sort dialog: Select a column, the sort direction (Ascending or Descending), and the null sorting behavior (Default, Nulls Always Last, or Nulls Always First).
    a. Column - Select a column.
    b. Direction - Select Descending or Ascending.
    c. Nulls - Select First or Last.
03. To add another sort rule, click the Add button (+).
04. Click Save.

05. Click Report
06. Click Save

交互式网格重新加载。

注意:要确保您是登录开发者模式,否则无法显示其他用户

© www.soinside.com 2019 - 2024. All rights reserved.