2012-01-16 56 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