我有两份主要报告。每个报告都有一个具有非主要经典报告的相应区域(因此总共有4个报告)。点击每个主要报告中的链接会在其相应的非域名报告中显示详细信息。
目前,单击主报表将重新加载整个页面,并且所有PL / SQL和SQL必须从所有4个报表中重新启动。
如果只刷新非域报告,它将减少SQL调用。我认为AJAX是实现这一目标的最佳选择。
我将如何完成这项任务?
谢谢。
P.S。,所有四个报告都由返回SQL语句的PL / SQL函数确定。所有标题也由PL / SQL函数确定,返回冒号分隔的字符串。
答案 0 :(得分:1)
考虑到以前的问题,您的经典报告依赖于某些页面项的会话状态。您正在colunmn链接中设置这些项目的值 如果您想要删除页面的提交,那么您需要一种方法,使锚标记不会触发其默认操作,并为要设置为动态操作的页面项提供值。
您必须将其放在列链接属性中:
onclick="return false;#" class="reportlink1"
然后你需要传递一些数据,我建议使用数据标签
data-value1="#COL1#:"
创建动态操作,触发点击并使用jQuery选择器.reportlink1
现在需要做的是为页面项提供所需的值 添加一个真正的动作来执行javascript:
var lValue1 = $(this.triggeringElement).data("value1");
$("P1_ITEM1").val(lValue1)
设置项目值后,创建“刷新”类型的另一个真实操作,并将其设置为影响您的辅助报告 最后一步是在辅助报告上设置“要提交的页面项”。这将导致报表将设置的页面项的值提交给会话,并确保在刷新区域时sql将返回正确的值。
答案 1 :(得分:1)
出于某种原因,汤姆的做法对我不起作用;我认为它必须是我的页面的特质。如果有人偶然发现这个问题,首先尝试Tom的方法,如果由于某种原因它不起作用,那么在动态操作中尝试使用AJAX进行以下调整:
如果您的非主要报告依赖于某些页面项目的会话状态,并且这些项目是通过主报告中的列链接设置的,则必须将其放在列链接属性中以防止提交页面并通过使用数据标签的值:
onclick="return false;" class="reportlink1" data-value1="#COL01#" data-value2="#COL02#"
创建动态操作,触发点击并使用JQuery选择器.reportlink1
为页面项提供所需的值 VIA AJAX 。添加一个真正的操作来执行同步javascript:
var v1 = $(this.triggeringElement).data("value1");
var v2 = $(this.triggeringElement).data("value2");
var get = new htmldb_Get(null, &APP_ID., 'APPLICATION_PROCESS=dummy', &APP_PAGE_ID.);
get.add('PX_ITEM1' , v1)
get.add('PX_ITEM2', v2);
gReturn = get.get();
get = null;
设置项目值后,创建另一个类型为“刷新”的真实操作,并将其设置为影响辅助报告。
与Tom的解决方案不同,请勿在辅助报告中设置要提交的页面项。