在数据库列中保存复选框数据
Saving Checkbox data in a DB column
我在 Oracle APEX 中创建了一个项目 P1_checkbox
,使用 LOV(select ename, empno from emp WHERE ename LIKE 's%';)
提供了多个复选框。
当我选中这些框时,我想 INSERT
选中的框数据到另一个 table "emp_selected"
.
然后,当我再次登录到应用程序时,应用程序现在应该根据插入 table "emp_selected"
的数据勾选(选中)复选框以及来自 table "emp"
并且当我取消选中一些预选复选框并选中新复选框时,它应该在 "emp_selected"
.
中进行相应更新
我的 Oracle APEX 版本是 4.2。
如果您想在特定检查事件中插入数据,那么您可以使用 Ajax 回调和 运行 按需处理。它将收到来自 JavaScript 代码的调用。
你可以参考这个博客:http://warp11.nl/2011/04/execute-page-process-with-ajax-callback/
具有多个复选框的顶点复选框将保存其状态,因为所有选定的值都用冒号连接在一起,例如 One:Two:Three
.
因此,您必须分离这些值,遍历它们并保存它们。
并且您需要正确配置您的复选框源。
See the sample page I set up (apex_demo/demo)
我的所有设置也都在那个页面上。为了这个例子,我使用一个顶点集合来模拟一个存储值的 table 。原理完全相同 - 您只需根据自己的选择来适应 table。
复选框 LOV SQL:
select ename, empno from emp
复选框源设置:
来源:始终 - SQL 查询 return 冒号分隔值
select c001
from apex_collections
where collection_name = 'CHECKBOX_EXAMPLE'
这将采用所有选定的值并使用冒号将它们连接起来。复选框将采用这些值并将它们标记为已选中。
提交后的流程:
DECLARE
l_vc_arr2 APEX_APPLICATION_GLOBAL.VC_ARR2;
BEGIN
apex_collection.create_or_truncate_collection('CHECKBOX_EXAMPLE');
l_vc_arr2 := APEX_UTIL.STRING_TO_TABLE(:P37_CHECKBOXES);
FOR z IN 1..l_vc_arr2.count LOOP
apex_debug.message(l_vc_arr2(z));
apex_collection.add_member(p_collection_name => 'CHECKBOX_EXAMPLE', p_c001 => l_vc_arr2(z));
END LOOP;
END;
我在 Oracle APEX 中创建了一个项目 P1_checkbox
,使用 LOV(select ename, empno from emp WHERE ename LIKE 's%';)
提供了多个复选框。
当我选中这些框时,我想 INSERT
选中的框数据到另一个 table "emp_selected"
.
然后,当我再次登录到应用程序时,应用程序现在应该根据插入 table "emp_selected"
的数据勾选(选中)复选框以及来自 table "emp"
并且当我取消选中一些预选复选框并选中新复选框时,它应该在 "emp_selected"
.
我的 Oracle APEX 版本是 4.2。
如果您想在特定检查事件中插入数据,那么您可以使用 Ajax 回调和 运行 按需处理。它将收到来自 JavaScript 代码的调用。 你可以参考这个博客:http://warp11.nl/2011/04/execute-page-process-with-ajax-callback/
具有多个复选框的顶点复选框将保存其状态,因为所有选定的值都用冒号连接在一起,例如 One:Two:Three
.
因此,您必须分离这些值,遍历它们并保存它们。
并且您需要正确配置您的复选框源。
See the sample page I set up (apex_demo/demo)
我的所有设置也都在那个页面上。为了这个例子,我使用一个顶点集合来模拟一个存储值的 table 。原理完全相同 - 您只需根据自己的选择来适应 table。
复选框 LOV SQL:
select ename, empno from emp
复选框源设置:
来源:始终 - SQL 查询 return 冒号分隔值
select c001
from apex_collections
where collection_name = 'CHECKBOX_EXAMPLE'
这将采用所有选定的值并使用冒号将它们连接起来。复选框将采用这些值并将它们标记为已选中。
提交后的流程:
DECLARE
l_vc_arr2 APEX_APPLICATION_GLOBAL.VC_ARR2;
BEGIN
apex_collection.create_or_truncate_collection('CHECKBOX_EXAMPLE');
l_vc_arr2 := APEX_UTIL.STRING_TO_TABLE(:P37_CHECKBOXES);
FOR z IN 1..l_vc_arr2.count LOOP
apex_debug.message(l_vc_arr2(z));
apex_collection.add_member(p_collection_name => 'CHECKBOX_EXAMPLE', p_c001 => l_vc_arr2(z));
END LOOP;
END;