2012-01-16 51 views
3

我在应用程序快递这是令我疯狂的以下问题:分支没有通过项目值

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

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

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

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

在我的JavaScript我把一个警报显示传递ID的值。这工作。我还将表格形式的隐藏页面项目更改为文本字段,并且它们得到正确更新并被保留。

日志也显示了这样的事情:

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

这看起来很不错。

但是看目标网页的重定向后的URL时,它看起来是这样的: 在fp = 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。 条件:请求= EDITSG(我的特殊请求值)。

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

解决开头描述的问题的其他解决方案当然也是很好的。奖金分数的想法如何使这项工作与新插入的项目(传递新项目的ID)。

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

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

谢谢!

+0

除了MRU/MRD和其他分支,除了分支到p22之外,页面上还有其他进程吗?如果是,他们在这些过程之前还是之后?也许你可以附上你的页面的截图,所以我们可以看到设置,不必猜测:) – Tom 2012-01-17 08:56:20

+0

我添加了一个截图。正如你所看到的,没有更多的页面进程。而其他分支的情况并非如此。我赞赏你的帮助! – aKzenT 2012-01-17 11:07:44

回答

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"); 
}; 

例如,当我改变佣金布雷克10并按铅笔,我得到定向到21页,其中显示了BLAKE的细节。我的佣金也被更新。我不得不改变MRU的状况。标准它被绑定到提交按钮,你需要清除这个字段。然后将条件更改为Request Is Contained within Expression 1,并将SUBMIT,<YOUR_REQUEST>。如上所述。 对于分支,我把我自己的条件分支首先在序列中。这很重要,你不希望另一个分支在此之前触发。 branch details

编辑:您的页面20分支可能用于清除缓存后删除?

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

所以,我不知道为什么它会出错你的结局。如果你想要,你可以在我的工作空间看看第20页和第21页,看看你是否发现任何东西。 http://apex.oracle.com/pls/apex 工作区:TOMPETRUSBE,apex_demo /演示

至于去到一个新的记录的细节: 你显然无法通过一个ID。你也不能“捕捉”它,因为多行更新不会返回任何地方的id,这与单行DML过程不同。说得通。 所以你会做的,而不是传递一个ID,传递一个独特的关键。很明显,你需要值来指定你想要查看的行,所以这只会在你能得到这些时才起作用。如果你只能使用id,那么你的运气不好。

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

一个例子是人:不是传递person_id,而是传递姓名。

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

+0

我懂了!虽然我不知道为什么......我改变了分支的顺序,这样第20页的(停用的)分支最后才起作用。所以只是为了看看是否真的是这个问题,我把它改回旧秩序,并且......它仍然有效!也许一些内部状态是错误的,只是改变周围的订单就可以修复它了......无论如何,非常感谢您将示例放在一起,并指向分行订单。我会在今天下午做更多的测试,以确保它正在工作,然后接受这个答案。 – aKzenT 2012-01-17 12:34:31

+0

很高兴你有它的工作! – Tom 2012-01-17 15:35:27