oracle-apex - 分支不传递项目值

标签 oracle-apex

我在应用程序 express 中遇到以下问题,这让我发疯:

我在 APEX 4.1 中有一个表格形式,其中包括一个链接列。当用户单击列时,我想保存应用程序的当前状态并将他重定向到另一个页面。我必须将单击链接的行的 ID 传递到其他页面。

使用谷歌我找到了这个解决方案:
https://forums.oracle.com/forums/thread.jspa?threadID=489666&tstart=720

这个想法是使用特殊的 REQUEST 值提交页面,并使用从链接调用的 javascript 函数将所有必需的项目值保存在隐藏的页面项目中。
然后,您创建一个页面分支,寻找特殊的 REQUEST 值作为条件并转到所需的页面,将目标页面中的项目设置为您之前保存的当前页面中的页面项目。

我按照说明进行操作,但它不起作用。目标页面已加载,但未设置项目。

在我的 javascript 中,我放置了一个警报,显示通过的 ID 的值。这行得通。我还将表格形式的隐藏页面项目更改为文本字段,它们得到正确更新并被保留。

日志还显示如下内容:

...Session State: Saved Item "P20_PRUEFUNG_ID_AKTIV" New Value="3950"

看起来不错。

但是,在重定向后查看目标页面的 URL 时,它看起来像这样:
f?p=110:22:1750507087114492::NO::P22_PRUEFUNG_ID:

P22_PRUEFUNG_ID 是我要在目标页面中设置的页面项的名称。请注意,该项目没有传输任何值。

在目标页面的日志中,我发现:
Session: Fetch session header information
Saving g_arg_names=P22_PRUEFUNG_ID and g_arg_values=
...Session State: Save "P22_PRUEFUNG_ID" - saving same value: ""

由于某种原因,第 20 页的值没有传递到第 22 页。查看我的分支,我找不到任何错误。我使用以下参数创建了一个普通分支(处理后):

页数:22
设置这些项目:P22_PRUEFUNG_ID
使用这些值:&P20_PRUEFUNG_ID_AKTIV。
条件:Request = EDITSG(我的特殊请求值)。

我必须补充一点,我仍然是 APEX 的初学者。所以这可能是一些愚蠢的事情。

解决开头描述的问题的其他解决方案当然也是受欢迎的。关于如何使用新插入的项目(传递新项目的 id)进行这项工作的想法的加分点。

编辑 : 这是源页面的截图:
Source page

页面中还有 2 个分支。到第 21 页的分支类似于到第 22 页的分支,只是在单击表中的另一个链接(另一个 REQUEST 值)时触发并且也不起作用。
我真的不知道为什么会有一个到第 20 页的分支,也就是当前页面。这是 APEX 添加的内容。也许是从 APEX 3 更新的残留物。无论如何我禁用了它,将条件设置为“从不”,所以它不应该影响结果(?)

谢谢!

最佳答案

我已经完成了您发布的链接和 made 2 pages that do this kind of thing 中提到的步骤。 .
第 20 页:emp 上的表格形式,带有列链接。此链接调用 javascript 函数 (page>javascript) 将选定的 empno 放入项目 P20_P_EMPNO (显示在底部以供引用)。

function godetail(nEmpno){
   $("#P20_P_EMPNO").val(nEmpno);
   doSubmit("EMPDETAIL");
};

例如,当我将 BLAKE 的佣金更改为 10 并按下铅笔时,我会转到第 21 页,其中显示了 BLAKE 的详细信息。我的佣金也更新了。

我不得不改变 MRU 的状况。标准它绑定(bind)到提交按钮,您需要清除该字段。然后将条件改为Request Is Contained within Expression 1 , 并输入 SUBMIT,<YOUR_REQUEST> .如所述。
对于分支,我将自己的条件分支放在序列的首位。这很重要,您不希望在此之前触发另一个分支。
branch details

编辑:您的第 20 页分支可能用于在删除时清除缓存?

确保:引用的项目拼写正确。使用大写字母。如果您想使用一个项目来设置一个值,请使用静态文本替换字符串:&ITEM. (很多人一开始忘记把点放在最后)。

所以,我不确定你为什么会出错。如果您愿意,可以查看我的工作区,第 20 页和第 21 页,看看您是否发现了什么。
http://apex.oracle.com/pls/apex
工作区:TOMPETRUSBE、apex_demo/demo

至于去新记录的详情:
你显然不能通过一个ID。您也无法“捕捉”它,因为与单行 DML 流程不同,多行更新不会在任何地方返回 id。说得通。
所以你要做的不是传递一个id,而是传递一个唯一的键。很明显,您需要值来指定您希望查看的行,所以这只有在您可以获得这些时才有效。如果您只能使用 id,那么您将不走运。

您还需要在详细信息页面上更改 DML-Fetch 流程:不要使用 rowid 或 id,而是将其更改为您传递的唯一键值。超过 3 个字段?使用页面流程将值选择到页面项目中。

一个例子是 person:你将传递姓名和姓氏,而不是传递 person_id。

但是,如果您允许用户输入某种 ID 或 UK,那么您可以保持这种状态。例如,如果我允许用​​户在我的示例应用程序中为新行输入 empno,它会起作用! (当然,提交失败时除外)

关于oracle-apex - 分支不传递项目值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8885867/

相关文章:

oracle-apex - Oracle Rest Data服务-自定义响应状态代码

javascript - oracle apex 表格形式的动态计算 : sys. htp.p

javascript - 在 Oracle APEX Interactive Report 中根据过滤器更新页面项

oracle-apex - 如何在交互式网格中将 APEX$ROW_SELECTOR 与动态操作结合使用

oracle - 你能动态获取你在oracle apex中所在的页码吗?

oracle-apex - 无法加载 PDF 文档 |顶尖

javascript - 关闭对话窗口后保存 Oracle Apex Classic Report 中当前行的突出显示

oracle-apex - 为什么我在 APEX 中收到此 apex_error_code : APEXDEV. IG.NO_PK?

javascript - 从超链接中删除 tabindex 属性

oracle-apex - 在 Oracle Apex 5 中,我想链接到交互式报告并设置过滤器 RequestID = #RequestID#