Oracle APEX:如何获取交互式网格选中的保存报表ID实现自定义打印
交互式网格自定义打印(基于选中的保存报表)
核心思路
通过JavaScript获取当前选中的保存报表ID,传递给后端PL/SQL,调用apex_region.export_data时指定该报表ID,实现自定义打印。
步骤1:创建页面项存储报表ID
创建一个隐藏页面项(比如P1_SELECTED_REPORT_ID),用于临时存储选中的保存报表ID,确保其会话状态保护设置为可选。
步骤2:JavaScript获取选中的报表ID
给自定义打印按钮添加动态动作,执行以下JavaScript代码(替换YOUR_IG_STATIC_ID为你的交互式网格区域静态ID):
// 获取IG实例 var igInstance = apex.region("YOUR_IG_STATIC_ID").widget().interactiveGrid("getViews", "grid"); // 获取当前活跃的保存报表ID var selectedReportId = igInstance.model.reportId; // 将ID存入页面项 apex.item("P1_SELECTED_REPORT_ID").setValue(selectedReportId);
步骤3:PL/SQL调用导出打印
在动态动作中添加“执行PL/SQL代码”步骤,使用以下代码(替换YOUR_IG_STATIC_ID和导出格式、文件名):
DECLARE l_export_content BLOB; BEGIN -- 调用导出API,指定选中的保存报表 l_export_content := apex_region.export_data( p_region_id => apex_util.get_region_id('YOUR_IG_STATIC_ID'), p_report_id => :P1_SELECTED_REPORT_ID, p_format => 'PDF', -- 可选格式:PDF/EXCEL/CSV等 p_as_attachment => TRUE, p_filename => 'Custom_IG_Report.pdf' ); -- 触发浏览器下载 apex_util.download_blob( p_blob_content => l_export_content, p_mime_type => 'application/pdf', p_filename => 'Custom_IG_Report.pdf' ); END;
关键说明
- 无需纠结
p_component_id参数:对于交互式网格,p_region_id已足够标识组件,指定保存报表需用p_report_id参数,这是你之前的核心误区。 - 确保IG区域静态ID正确:可以在区域属性的“高级”标签下找到静态ID。
内容的提问来源于stack exchange,提问作者APex newbie
相关产品推荐
相关产品推荐

