만료. 처음에는 this'd 조금 더 쉬울 거라고 생각했지만 잠시 후에 나는 radiogroups 꽤 toothgrinder 것으로 나타났습니다. (정점 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>
좋아! apex_application.g_F01
배열을 사용하여 액세스 할 수있는 5 개의 필드가 생성됩니다. 여기서 필드 1은 apex_application.g_f01(1)
입니다.
그러나 방사성 그룹은 차별적 반응을 보입니다. APEX_ITEM.RADIOGROUP
은 실제로 방사선 그룹을 만들지 않고 라디오 버튼을 만듭니다. 그룹은 f01 배열이됩니다. 와아! 나는 그것을 좋아하지 않는다! F ## 배열은 1부터 50까지만 시작하므로 몇 가지 항목을 생성하면 이상적이지 않습니다. 또한 논리가 엉망이됩니다. 갑자기 배열을 반복하지 않아도됩니다. 이 항목으로 구성된을 radioGroup을 만들어 : 당신은 그것은 종류의 당신이 무엇을 요구했다 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
를 교체하려는 경우
예를 들어, 출력은 다음과 같이 될 것이다. 질문 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>
숨겨진 항목을 볼 수 있습니까? 나는 정점이 그 숨겨진 아이템에 선택된 값을 넣는다 고 가정하므로, 당신은 방사선 그룹의 선택된 값을 쉽게 참조 할 수 있습니다.
아마도이 문제를 해결하는 가장 좋은 방법 일 수 있습니다. radiogroups 및 단추를 생성하고 javascript를 사용하여 숨겨진 항목에 선택한 값을 넣으십시오. apex_item.hidden
을 사용하여 숨겨진 항목을 만들 수 있습니다. 감사하게도 나중에 배열에서 쉽게 참조 할 수 있습니다. p_idx => 1
을 사용하면 모든 숨겨진 항목이 배열 g_f01
에 저장됩니다.
radiogroup 컨테이너에서 숨겨진 항목을 피기 백해야합니다. 그런 다음 라디오 버튼에 onchange 이벤트를 바인딩하십시오. 예를 들어이 jsfiddle을보세요. 이렇게하면 숨겨진 항목에 선택된 값이 유지되며 제출시 게시됩니다.
길이가 긴 게시물에 대해 유감스럽게 생각합니다. 너무 복잡 할 것이라고 생각하지 않았습니다. 누군가가 따라 와서 쉬운 방법을 보여줍니다. :)
많은 감사 : 여기
은 JS 함수이다. 나는 숨겨진 접근법을 더 일찍 고려 했으므로 이것이 유일한 방법이라고 생각한다. 진행 상황에 대해 계속 알려줄 것입니다. – Dandy