通常,添加的行选择器将存储在apex_application.g_f01
数组中(有关这些数组的更多信息,请参阅see the 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
,请注意该行选择器值是报告的当前页的ROWNUMBER。
如果您需要更新状态,则需要引用包含记录ID的数组。这样你就可以在这些记录上执行UPDATE
。
来源
2012-02-21 08:48:57
Tom
APEX 4.1具有新功能。您可以将流程与表格形式相关联,将其范围设置为“对于创建和修改的行”。该过程将针对每个修改的行执行。因此,您可以使用APEX $ ROW_SELECTOR变量来测试是否选中了行选择器(如果选中,则返回X,否则返回null)。它也有变量APEX $ ROW_NUM和APEX $ ROW_STATUS来获取当前行的rownum和状态。另外我使用apex_040100.wwv_flow_tabular_form.get_row_values函数来获取按列名索引的行值的关联数组。所以你可以在没有丑陋的“apex_application.g_fXX”结构的情况下获得列值。 – NoGotnu 2013-06-08 11:03:02