Oracle APEX交互式报告条件列链接显示

时间:2015-02-03 13:00:42

标签: oracle oracle-apex

我有一个交互式报告,显示文章表中的所有记录。对于已登录的作者,我想显示所有记录,但是只应为该作者撰写的那些文章显示EDIT。在文章表中,我有列CREATED_BY,其中包含作者用户名。

我在链接列中添加条件作为表达式1中的项目/列的值=表达式2,因为表达式1 = #CREATED_BY#& Expression2 = :APP_USER

但这不起作用。这是我第一次采用这种方法根据条件显示编辑链接。

当我添加条件Value of Item / Column in Expression 1 is not null并设置Expression1 = #CREATED_BY#时,它仍然没有显示编辑链接。所以,我认为#CREATED_BY#返回null。但是表中的记录有一个值&我也在报告专栏中看到了它。

有人可以帮忙吗?我不知道自己哪里出错了。

3 个答案:

答案 0 :(得分:8)

您使用的条件是列,而不是每行,因此您将无法以这种方式执行此操作。

我认为实现此目的的最佳方法是在查询中创建一个虚拟列,用作编辑链接:

SELECT
     CASE
      WHEN CREATED_BY = :APP_USER THEN
        '<a href="' || APEX_UTIL.PREPARE_URL( p_url => 'f?p=' || &APP_ID. || ':<YOUR EDIT PAGE>:'||&SESSION.||'::NO::<PAGE ITEM>:'||COLUMN ID, p_checksum_type => 'SESSION') || '"><img src="/i/menu/pencil2_16x16.gif"></a>'
      ELSE ''
    END edit_link,

 ...THE REST OF YOUR QUERY...

您还必须将列定义下的列显示更改为

  

标准报告栏

并可选择删除

下的选项
  

允许用户:   所以用户无法隐藏/排序/ ...列。

Column Definition

希望这可以帮到你。任何疑问或进一步解释只是问。

答案 1 :(得分:1)

这是与hmarques类似的解决方案,但它不需要手动构建整个链接。

我会在报告查询中包含一个虚拟列,其中包含null,或者如果当前用户名与CREATED_BY匹配,则指向“编辑”按钮图像的指针:

select decode(CREATED_BY
            ,:APP_USER
            ,'<img src="#IMAGE_PREFIX#edit.gif" alt="">' 
                -- or your preferred image/hyperlink text
            ) EDITLINK
       --, your columns
from ARTICLES
--etc

使用标准列链接功能将参数传递到您的编辑页面,但使用#EDITLINK#作为列的链接文本。不要忘记将列的显示类型设置为“标准报告列”。我个人也会删除列标题 - 它是一个必填字段,但你可以将它设置为一个空格。

答案 2 :(得分:1)

我能够在APEX 5中提出解决方案,但同样适用于APEX 4.2。您可以使用内置APEX列链接和hmarques建议的案例陈述轻松完成此操作。

按如下方式构建查询:

SELECT CASE
           WHEN CREATED_BY = :APP_USER THEN
               'Edit'
           ELSE
               NULL
       END EDIT,
       ...rest of query

然后,转到:报告属性&gt;您的修改列&gt;并滚动到页面的列链接部分。选择链接文字文本框旁边的箭头,然后选择 #EDIT#作为列链接文字。

另外,使用此html代码设置链接属性

class="t-Button t-Button--simple t-Button--hot t-Button--stretch"

这会使列看起来像一个按钮,并且不会显示传统的铅笔图标(这是此方法的唯一缺点)。

Click here to see screen shot

不要忘记将编辑栏设为标准报告栏,祝你好运!

约翰