我创建了一个包含pl / sql内容区域的页面,我在其中创建了一个html表。给出了用于创建表的表和截图的pl / sql代码。
该页面是向导列表中的第2页,共4页。因此,当单击第4页上的“完成”按钮时,我想将此html表的所有行插入到数据库表中。
我想知道如何识别放在html表中的值以及如何在数据库表中插入这些值。有人可以帮我这么做吗?
BEGIN
htp.p('
<HTML>
<HEAD>
<TITLE>Organization Records</TITLE>
</HEAD>
<BODY>
<H1>Organization Records</H1>
<TABLE id="DataForm" BORDER="1 " style="border-collapse: collapse; width="100%">
<TR style="width=50%">
<TH>Hierarchy</TH>
<TH>Org Long Name</TH>
</TR>
<TR style="width=50%">
<TH><input type="text"/></TH>
<TH>
<select id="S1" name="S1">
<option value="id1">data1</option>
<option value="id2">data2</option>
<option value="id3">data3</option>
</select>
</TH>
</TR>
</TABLE>
<button type="button" onclick="addRow()">Add</button>
</BODY>
</HTML>
“); 端;
答案 0 :(得分:2)
您需要在提交第2页时捕获值,因为在您提交第4页时它们不再出现在HTML中。
将name
的{{1}}属性更改为APEX允许的属性 - 即&#34; f01&#34;,&#34; f02&#34;,...,&之一#34; F50&#34 ;. (有关详细信息,请参阅docs。)
提交页面后,APEX将填充相应的数组,例如select
,apex_application.g_f01
等
所以你需要做的就是遍历相关数组以获取值并将它们插入到表中:
apex_application.g_f02
答案 1 :(得分:2)
我真的不明白为什么你会陷入编写自己的HTML的陷阱。你做自己和APEX是一种伤害 根据您提供的内容,您已经证明对plsql块没有任何用处,也不需要生成自己的HTML。您甚至遇到了必须将项目从页面映射到后端的问题 我会更进一步说,你发布的内容会在你的页面中创建完全无效的HTML,并且它的唯一原因是因为你的浏览器(可能不是目标受众)是所以无论如何要宽容地解析它。 (标记HTML是一个根标记,可能只出现一次。所以在这里你已经在HTML文档中堆叠了一个HTML文档。检查你的页面源并通过验证器运行它。)
为什么或者什么原因,您没有使用经过验证的方法将经典报告与apex_item api结合使用?或者,为什么不使用表格形式,它可以提供验证和每行处理?无论哪种方式都是陈述性的和快速的 通过经典报告,我所需要的只是一个经典的报告区域和一些SQL,我会更快地发布你在这里写的相同的东西。
select apex_item.text(p_idx => 1, p_value => text_value) hierarchy
, apex_item.select_list_from_query(p_idx => 2, p_value => org_id, p_query => 'select dname, depto from dept') org_name
from my_table
使用表格形式时甚至更短,因为我不需要输出html。 (并考虑apex 5.1的交互式网格......)
此外,您可能需要考虑使用apex_collection将数据映射到,因为这是一个向导。如果您没有,您将直接将数据映射到表中,这在向导中通常不是所需的方法。此外,如果发生处理或验证错误怎么办?以表格形式(自创建或其他方式)输入的数据不会在出错时存储,导致在重新呈现页面时清除/重置表单。
除非你有充分的理由在顶点生成自己的自定义html,而这些html无法在模板中捕获(页面,区域,报告,html表达式),否则不要这样做。考虑两次。
答案 2 :(得分:0)
我也在开发一个自定义表单,在组合查询中,表格形式是无用的,所以你必须编写自己的进程。
正如Tony所说,您可以在apex_application.g_f01
到apex_application.g_f50
数组中设置值,该值可以在p_idx
参数中设置。
例如:APEX_ITEM.HIDDEN(1,empno)
另见(在隐藏的例子中,它解释得更详细):https://docs.oracle.com/cd/E14373_01/apirefs.32/e13369/apex_item.htm#AEAPI196