Oracle APEX 26.1 交互式报表新增功能

交互式报表是许多 APEX 应用展示和探索数据的核心。Oracle APEX 26.1 引入了对交互式报表的自然语言支持,为用户提供了一种以对话方式优化报表的新途径。本文将重点介绍本版本中的其他增强功能,这些功能使交互式报表对开发者更灵活、对最终用户更有用,并且更适合生成更丰富的报表输出。

这些增强功能包括声明式行选择、列级 CSS 类、限制显示行的更好方法、从自定义控件直接访问交互式报表对话框,以及针对更大更复杂报表的改进渲染。

声明式行选择

Oracle APEX 26.1 为交互式报表引入了内置的声明式行选择功能。用户现在可以使用复选框选择行,开发者可以直接在页面设计器中配置整个交互过程,无需编写自定义代码。

这使得批量审批、批量更新、导出以及其他多行操作等场景更加容易实现。所选行的值可立即用于动态操作和页面进程,从而简化下游处理流程。

页面设计器中的三个新属性

为了支持行选择,Oracle APEX 26.1 在页面设计器的“行选择器”列下新增了三个属性:

  • 启用多选:启用行选择功能,并为每一行显示一个复选框。必须先开启此设置,其他行选择行为才可用。
  • 显示全选:在列标题中添加一个复选框,使用户可以一键选中或取消选中当前所有可见行。此设置仅在启用多选设置为“是”时生效。
  • 隐藏控件:从用户界面隐藏行选择器列,同时在后台保持行选择处于激活状态。当通过 JavaScript API 而不是可见复选框来以编程方式管理选择时,此设置非常有用。

除了这三个属性,还有一个值得了解的配置:

  • 当前选择页面项:将页面项(例如 P1_SELECTED_IDS)绑定到报表选择。APEX 会自动使用当前选中行的主键值(以冒号分隔的列表)填充该项。这样,页面进程和动态操作就可以直接引用选中的值。

如何设置

  1. 页面设计器中打开页面,选择交互式报表区域。
  2. 右键点击交互式报表区域下的,选择创建行选择器。这是添加行选择器列的最快方法——它会立即在属性面板中激活这三个新属性。
  3. 启用多选设置为,允许用户一次勾选多行。
  4. 如果你想要标题级别的复选框,可以一键选中所有可见行,请将显示全选设置为
  5. 标准使用情况下,将隐藏控件保留为。仅当你打算完全通过 JavaScript API 管理选择并且不想让用户看到复选框时,才将其设置为
  6. 当前选择页面项设置为一个页面项——例如P1_SELECTED_IDS。当用户与报表交互时,APEX 会自动用选中的主键值填充此项。
  7. 在选择变更 [区域] 事件上创建一个触发操作,以响应用户的选择——触发一个进程、刷新一个区域、更新一个表单,或者任何你工作流需要的操作。
  8. 保存并运行。报表中会出现复选框,选中的值将通过绑定的页面项立即提供给任何下游页面进程。

注意:如果你同时使用“隐藏控件”和 JS API,区域接口上的关键方法是:getSelectedValues() 用于读取当前选择,setSelectedValues() 用于按值选择行,selectAll() 用于一键全选。这些在 APEX JS API 文档中有完整说明。

更高效的报表渲染

交互式报表现在对更大更复杂的输出采用了更高效的渲染方法。这打破了之前 32K 行的输出限制,为报表提供了更多空间来容纳多列、更长的文本值和更丰富的模板。

无需配置,也无需迁移。现有的交互式报表会自动受益于这一改进。

限制显示行的更好方法

交互式报表现在有一个新属性:最大显示行数。这控制了在所有筛选、排序和报表逻辑应用之后,向用户显示的最大行数。

两个属性:最大处理行数和最大显示行数是互斥的。你一次只能设置其中一个。我们鼓励你使用新的“最大显示行数”属性,因为它始终反映经过完全处理和正确筛选的数据,是在处理大数据集时的更好选择。

  • 最大处理行数:在筛选和排序运行之前限制行数
  • 最大显示行数:在所有报表逻辑完成后限制显示的行数

新属性是限制显示结果的首选方法,因为它始终反映经过完全处理和正确筛选的数据。两个属性都受支持,现有配置无需任何更改即可继续使用。

如何设置

  1. 页面设计器中,选择你的交互式报表区域。
  2. 属性面板中,滚动到分页部分。
  3. 最大显示行数设置为你希望限制输出的行数。由于这两个属性互斥,设置此项将清除之前在任何“最大处理行数”中设置的值。
  4. 保存并运行。用户现在最多只能看到你指定的行数,并且这些行反映的是经过完全筛选和排序的数据。

注意:理解两者区别的一种简单方式是:最大处理行数是对原始数据的上游限制,而最大显示行数是对用户实际看到内容的下游限制。

列级 CSS 类

交互式报表现在支持在页面设计器中直接为列分配 CSS 类。指定的类会在运行时渲染到 `` 元素上,为开发者提供了一种干净的应用列级样式的方法。

该属性还支持替换,允许使用应用程序项、页面项、列值或系统变量等值动态确定 CSS 类。

这为以下模式打开了大门:

  • 有条件地高亮显示值
  • 根据页面状态驱动呈现
  • 应用上下文感知的样式
  • 使交互式报表与共享设计系统保持一致

此增强功能也使交互式报表与交互式网格和经典报表保持一致,后者已支持列级 CSS 类。

如何设置

  1. 页面设计器中,展开你的交互式报表区域,点击你想要应用样式的特定
  2. 在该列的外观部分,找到新的CSS 类属性。
  3. 直接输入一个工具类,例如u-color-18u-bold。APEX 附带一组内置的工具类,你可以直接使用。你也可以输入多个类,用空格分隔。
  4. 该类会在运行时直接应用于该列的每个``单元格——无需内联 CSS 或自定义样式表。APEX 会自动处理渲染。
  5. 对于动态类,请使用替换字符串——例如&STATUS_CLASS.,引用列值或页面项。替换会在运行时按行解析,因此每个单元格可以根据其数据携带不同的类。

从自定义控件打开交互式报表对话框

一个名为调用交互式报表对话框的触发操作允许你直接从按钮、图标或其他页面控件打开任何 IR 对话框,而无需通过标准的“操作”菜单。

这为你作为开发者提供了真正的灵活性。将“选择列”按钮放在布局所需的确切位置。添加一个下载图标,单击即可打开 IR 下载对话框。任何 IR 对话框,都可以出现在对用户最有意义的位置。

一些实际示例:

一个自定义工具栏按钮,用于打开“选择列”对话框。一个独立的下载图标,直接触发下载对话框。一个从页面任意位置进入筛选器对话框的快捷方式。全部声明式实现,无需自定义 JavaScript。

这对于自定义页面布局和引导式报表工作流尤其有用,因为直接访问特定的报表控件能显著提升用户体验。

如何设置

第一步:创建菜单按钮

  1. 页面设计器中,打开你的页面并找到交互式报表区域。
  2. 右键点击该区域,添加一个新按钮。将槽位设置为“交互式报表搜索栏右侧”,使其与搜索控件内联显示。
  3. 给它一个有意义的标签,例如“自定义操作”。将按钮模板设置为“带图标的文本”,并添加一个类似fa-angle-down的图标,以获得干净的下拉菜单效果。
  4. 行为下,将按钮类型设置为菜单。这会将按钮变成菜单条目的下拉容器。

第二步:添加菜单条目

  1. 在按钮下,为你要公开的每个 IR 对话框添加菜单条目——例如:高亮、图表、下载、保存报表。
  2. 对于每个菜单条目,设置标签(例如下载),并在行为下将类型设置为触发操作。触发操作是 APEX 26.1 中的一项新功能,允许按钮、菜单条目和模板组件操作直接在页面设计器树中其下方定义动态操作步骤——我们将在另一篇博文中深入介绍。

触发操作是 APEX 26.1 中的一种新行为类型,允许你在页面设计器树中直接在按钮、菜单条目或模板组件操作下方定义动态操作步骤。我们将在另一篇博文中深入介绍。

第三步:连接“调用 IR 对话框”操作

  1. 在每个菜单条目下,会出现一个“触发的操作”节点。添加一个触发操作,并将操作设置为调用交互式报表对话框
  2. 设置下,将操作下拉菜单设置为该条目应打开的特定 IR 对话框(例如下载)。
  3. 受影响的元素下,将选择类型设置为区域,并将区域指向你的交互式报表区域。
  4. 对菜单中要添加的每个对话框条目重复步骤 5–9。
  5. 保存并运行。你的自定义菜单按钮会出现在 IR 搜索栏上,每个条目都会直接打开相应的 IR 对话框,无需通过“操作”菜单。

您可以根据需要添加任意多的菜单条目——高亮、图表、下载、保存报表等等。每个条目都独立连接到自己的对话框,因此你可以完全控制要呈现哪些 IR 控件以及它们的顺序。

总结

Oracle APEX 26.1 为平台中最常用的组件之一带来了一系列广泛的改进。渲染改进是自动的,无需你做任何操作。新的开发者功能(行选择、CSS 类、新的行限制属性和动态操作)可以按照你自己的节奏采用,并且与你现有的应用程序无缝协作。

原文链接:https://blogs.oracle.com/apex/whats-new-in-interactive-reports-in-oracle-apex-26-1