Pfew。起初我認爲這樣會容易一點,但是在我開了一段時間之後,我發現放射線組是相當的牙科醫生。 (這是在頂點4.1 btw)
通常我會迴應,使用apex_item將是去動態創建項目的方式。然而,放射線羣反應不佳。
如果你會使用,例如:
for r in(select level l, 'question '||level q, 'Y' a
from dual
connect by level < 6)
loop
htp.p('<div>'||r.q);
htp.p(
APEX_ITEM.TEXT(
p_idx => 1,
p_value => r.a,
p_size => 3,
p_maxlength => 1)
);
htp.p('</div>');
end loop;
輸出將是:
<div>question 1
<input type="text" name="f01" size="3" maxlength="1" value="Y" />
</div>
<div>question 2
<input type="text" name="f01" size="3" maxlength="1" value="Y" />
</div>
<div>question 3
<input type="text" name="f01" size="3" maxlength="1" value="Y" />
</div>
<div>question 4
<input type="text" name="f01" size="3" maxlength="1" value="Y" />
</div>
<div>question 5
<input type="text" name="f01" size="3" maxlength="1" value="Y" />
</div>
太好了!生成5個字段,可通過使用apex_application.g_F01
數組訪問,其中字段1將爲apex_application.g_f01(1)
。然而,輻射組反應不同。 APEX_ITEM.RADIOGROUP
所做的實際上並不是創建一個radiogroup,而是創建一個radiobutton。該組將是f01陣列。 哇!我不喜歡那樣! F ##陣列從1開始到50開始,所以如果你生成了一些項目,這並不理想。另外,你的邏輯被搞砸了:突然之間,你不必再遍歷一個數組,而是通過數組。
例如,輸出會是這樣,如果你有apex_item.radiogroup
<div>question 1
<input type="radio" name="f01" value="Y" />Yes?
</div>
<div>question 2
<input type="radio" name="f01" value="Y" />Yes?
</div>
<div>question 3
<input type="radio" name="f01" value="Y" />Yes?
</div>
<div>question 4
<input type="radio" name="f01" value="Y" />Yes?
</div>
<div>question 5
<input
它像是做了什麼,你問替換apex_item.text
:它創造了由項目的RadioGroup中。如果您點擊問題4的按鈕並且問題1先前已標記,則該標記將從問題1中移除並設置爲4.
但是,它可以工作。當您提交併循環播放F01數組時,它將傳遞該值:
--this after submit process
for i in 1..apex_application.g_f01.count
loop
apex_debug_message.log_message('array F01: item '||i||': '||apex_application.g_f01(i));
end loop;
--results in this debug message:
--array F01: item 1: Y
好的,那麼您的選擇是什麼呢?不要使用這個。它不是動態的!你不能遍歷50個陣列,除非你在每個陣列上寫50個循環......
那麼APEX實際上是如何工作的呢?當查看頁面項目radiogroup的輸出代碼時,這是輸出:
<input type="hidden" name="p_arg_names" value="50795996117686343389" />
<fieldset id="P3_RGROUP_PAGE_ITEM" tabindex="-1" class="radio_group">
<input type="radio" id="P3_RGROUP_PAGE_ITEM_0" name="p_t01" value="Yes" checked="checked" />
<label for="P3_RGROUP_PAGE_ITEM_0">Y</label><br />
<input type="radio" id="P3_RGROUP_PAGE_ITEM_1" name="p_t01" value="No" />
<label for="P3_RGROUP_PAGE_ITEM_1">N</label></fieldset>
查看隱藏的項目?我假設apex將選定的值放入該隱藏項目中,以便您可以輕鬆地引用選定的radiogroup值。
這可能是您解決這個問題的最佳方法。生成您的radiogroups和按鈕,並使用javascript將選定的值放入一個隱藏的項目中。您可以使用apex_item.hidden
創建隱藏物品,之後您可以在陣列中輕鬆地引用它。如果您使用p_idx => 1
,所有隱藏的項目將被存儲到數組g_f01
。
你只需要在你的radiogroup容器中搭載這個隱藏的物品。然後將onchange事件綁定到您的單選按鈕。例如,請看jsfiddle。這會將選定的值保留在隱藏項目中,該項目將在提交時發佈。
對不起,我不認爲它會變得如此複雜。希望有人來,並向我們展示一個簡單的方法:)
許多感謝您的答覆。我曾經考慮過隱藏的方法,所以我想這是唯一的方法。將隨時向您通報進展情況 – Dandy