如何在APEX ORACLE中创建和使用多选列表?

时间:2018-05-27 12:18:37

标签: oracle oracle-apex oracle-apex-5 oracle-apex-5.1

我有一个名为Employees的表,其中包含Employee_id和Employee_Name列。现在我想在每个Employee Name的前面创建一个包含Checkbox的页面,选择所需的页面,将它们存储到临时表中并使用它们进行进一步的操作。我面临的问题是如何创建多选列表并将选择值存储在表中。有多项选择的项目吗?如果没有,我该怎么办?

4 个答案:

答案 0 :(得分:3)

Shuttle项目。在左侧,您将显示所有员工的列表。通过项目按钮,您可以将所有(或仅部分)移动到项目的右侧。提交页面后,员工ID列表以冒号分隔的值的形式存储在表格列中,例如

6547:8879:5587:9987

这是一种简单的方法。但是,一旦你必须实际这些值,你必须将它们分成行。不过不是问题。这是一个查询:

SQL> with emps (shuttle_item) as
  2    (select '6547:8879:5587:9987' from dual)
  3  select regexp_substr(shuttle_item, '[^:]+', 1, level) one_item
  4  from emps
  5  connect by level <= regexp_count(shuttle_item, ':') + 1;

ONE_ITEM
---------------------------------------------------------------------
6547
8879
5587
9987

SQL>

或者,您可以创建一个表格形式,该表格也显示所有员工,并在每行的开头都有复选​​框。然后,您将创建一个流程 - 在循环中 - 将所选值存储到您提到的临时表中。例如:

-- F01 = row selector. If you check 1st and 3rd row, f01.count = 2 (2 rows checked)
--       f01(1) = 1 (row #1), f01(2) = 3 (row #3)
-- F02 = EMP_ID. f02(1) = EMP_ID that belongs to employee in 1st row, 
--       f02(3) = EMP_ID that belongs to emplyee in 3rd row
declare
  l_id number;
begin
  for j in 1 .. apex_application.g_f01.count
  loop
    l_id := apex_application.g_f02(apex_application.g_f01(j));

    insert into temp_table (emp_id) values (l_id);
  end loop;
end;

答案 1 :(得分:0)

在oracle apex 5.1中可以选择创建多选列表。创建一个类型为的pageItem:&#39;选择列表&#39;。进行“允许多项选择”&#39;到&#39;是&#39;。在&#39;值列表下编写选择列表的SQL查询。属性。然后将根据我们的查询显示选择列表。查询格式为: 选择[displayValue],        [的returnValue]   来自......  哪里......  订购......

现在,一旦从选择列表中选择多个值(使用ctrl + click),这些值将被存储为&#39;:&#39;选择列表页面项中的分隔值。

答案 2 :(得分:0)

我几次创建了一个视频来解决您的问题。它是一个循序渐进的教程,如何创建复选框并处理它们。

视频可在此处获得: https://www.youtube.com/watch?v=T-LXRMWQbPk

此致

答案 3 :(得分:0)

如果列表太大,建议您使用Popup LOV项并激活Multiple Values开关,而不要使用Select listShuttle,因为它有一个内部对象列表的搜索字段,使用户更容易找到目标值。另外,就像Select ListShuttle项一样,您可以为所选字段设置Separator字符。