Oracle Apex - 动态检查不在报表中的复选框项

时间:2012-10-16 13:27:01

标签: oracle oracle-apex

我的页面上有一个复选框项(注意:这不在报告中),我想在页面加载时动态选中复选框。我有一个表格,其中包含所有复选框类型和一个表格,用于标识用户有权访问的复选框或更好的术语。

我的问题是,在Apex复选框项目中,您如何告诉它动态选中复选框。我在报告中使用它,我的查询如下所示:

SELECT at.name AS TITLE,
     CASE
         WHEN at.name IN (SELECT atp.name FROM preferences p) THEN apex_item.checkbox(1,at.value,'CHECKED')
         ELSE apex_item.checkbox(1,at.value, 'UNCHECKED')
      END AS CHECKBOX
FROM access_types at

我可以在oracle apex复选框项目中执行类似的操作吗?

1 个答案:

答案 0 :(得分:3)

不确定它是否是您想要的,但如果您只需要在页面加载时初始化复选框项,则可以:

1 - 使用复选框项的 来源 属性并设置以下属性:

  • 使用的来源Always, replacing any existing value in session state
  • 来源类型SQL Query (return single value)SQL Query (return colon separated value),具体取决于您的复选框项目是否包含多个复选框。
  • 源值或表达式:返回正确值的查询。

2 - 使用标头计算来计算您的项目:

  • 计算项目:您的复选框项目
  • 计算点Before header
  • 计算类型SQL Query (return single value)SQL Query (return colon separated value),具体取决于您的复选框项目是否包含多个复选框。
  • 计算:返回正确值的查询。

注意 :我也在报告中使用了复选框,但我注意到当你有很多行时,它比使用简单的HTML复选框要慢,所以如果您认为报告速度很慢,我建议您从查询中生成简单的HTML复选框:

SELECT
  at.name AS TITLE,
  CASE WHEN at.name IN (SELECT atp.name FROM preferences p) THEN
    '<input type="checkbox" value="'||at.value||'" checked="checked" />'
  ELSE
    '<input type="checkbox" value="'||at.value||'" />'
  END AS CHECKBOX
FROM
  [...]