1

我有两个主要报告。每个报告都有一个对应的区域和一个非主要经典报告(因此总共 4 个报告)。单击每个主要报告中的链接可在其相应的非主要报告中显示详细信息。

目前,单击主报告将重新加载整个页面,并且所有 PL/SQL 和 SQL 必须从所有 4 个报告中重新触发。

如果只刷新非主报表,它将减少 SQL 调用。我认为 AJAX 将是实现这一目标的最佳选择。

我将如何去做这样的任务?

谢谢你。

PS,所有四个报告都是由返回 SQL 语句的 PL/SQL 函数确定的。所有标题也由返回冒号分隔字符串的 PL/SQL 函数确定。

4

2 回答 2

1

考虑到您之前的问题,您的经典报告依赖于某些页面项目的会话状态。您在列链接中设置这些项目的值。
如果您想取消页面的提交,那么您需要一种方法让锚标签不触发其默认操作,并为要设置为动态操作的页面项目提供值。

您必须将其放在列链接属性中:

onclick="return false;#" class="reportlink1"

然后你需要传递一些数据,我建议使用数据标签

data-value1="#COL1#:"

创建一个动态动作,点击触发并使用 jQuery 选择器.reportlink1

现在需要做的是为页面项提供所需的值添加一个真正的操作来执行 javascript:

 var lValue1 = $(this.triggeringElement).data("value1");
 $("P1_ITEM1").val(lValue1)

设置项目值后,创建另一个“刷新”类型的真实操作并将其设置为影响您的辅助报告。
最后一步是在辅助报告上设置“要提交的页面项目”。这将导致报告将设置的页面项的值提交给会话,并确保刷新区域时 sql 将返回正确的值。

于 2013-01-31T08:52:45.487 回答
1

出于某种原因,汤姆的方法对我不起作用。我认为这一定是我的页面的特质。如果有人偶然发现这个问题,请先尝试 Tom 的方法,如果由于某种原因它不起作用,请尝试在动态操作中使用 AJAX 进行以下改编:

如果您的非主报表依赖于某些页面项的会话状态,并且这些项是通过主报表中的列链接设置的,则必须将其放在列链接属性中以防止提交页面并使用数据传递值标签:

onclick="return false;" class="reportlink1" data-value1="#COL01#" data-value2="#COL02#"

创建动态动作,点击触发并使用 JQuery 选择器.reportlink1

通过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 的解决方案不同,不要在辅助报告上设置要提交的页面项目。

于 2013-02-01T22:00:21.510 回答