Как правило, добавленный селектор строк будет сохранен в массиве apex_application.g_f01
(дополнительную информацию об этих массивах, см. В apex api doc ). Проверьте это, посмотрев на HTML-вывод вашей страницы. После html вашей табличной формы вы можете найти входные данные для отображения массива (я использовал табличную форму на основе таблицы EMP
):
<input type="hidden" name="fhdr" value="Select Row" id="fhdr_001" />
<input type="hidden" name="fmap" value="EMPNO" id="fmap_002" />
<input type="hidden" name="fhdr" value="Empno" id="fhdr_002" />
<input type="hidden" name="fmap" value="ENAME" id="fmap_003" />
<input type="hidden" name="fhdr" value="Ename" id="fhdr_003" />
<input type="hidden" name="fmap" value="JOB" id="fmap_004" />
<input type="hidden" name="fhdr" value="Job" id="fhdr_004" />
<input type="hidden" name="fmap" value="MGR" id="fmap_005" />
<input type="hidden" name="fhdr" value="Mgr" id="fhdr_005" />
<input type="hidden" name="fmap" value="HIREDATE" id="fmap_006" />
<input type="hidden" name="fhdr" value="Hiredate" id="fhdr_006" />
<input type="hidden" name="fmap" value="DEPTNO" id="fmap_007" />
<input type="hidden" name="fhdr" value="Deptno" id="fhdr_007" />
Вам понадобится селектор строк (массив f01) и любое другое значение, которое вам нужно.
Например, я использовал массив 3: ENAME
.
DECLARE
v_rowno NUMBER;
BEGIN
for i in 1..apex_application.g_f01.count
loop
v_rowno := apex_application.g_f01(i);
apex_debug_message.log_message('row# selected: '||v_rowno);
apex_debug_message.log_message('Employee: '||apex_application.g_f03(v_rowno));
end loop;
END;
В моей табличной форме я перешел на страницу 2 и выбрал 2 сотрудников.
Это выводит в моей отладке:
row# selected: 2
Employee: ADAMS
row# selected: 3
Employee: JAMES
Обратите внимание, что значением селектора строк является округленное число для текущей страницы отчета.
Если вам нужно обновить статус, вам нужно сослаться на массив, содержащий идентификатор записи. Таким образом, вы сможете выполнить UPDATE
для этих записей.