【问题标题】:Oracle APEX Interactive Report conditional column link displayOracle APEX 交互式报表条件列链接显示
【发布时间】:2015-04-02 16:31:16
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: oracle oracle-apex


    【解决方案1】:

    您使用的条件是针对列而不是针对每一行,因此您将无法那样做。

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

    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...
    

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

    标准报告栏

    您可以选择删除以下选项

    允许用户: 因此用户无法隐藏/排序/...该列。

    希望这可以帮助你。如有任何疑问或进一步解释,请询问。

    【讨论】:

      【解决方案2】:

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

      按如下方式构建您的查询:

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

      然后,转到:报告属性 > 您的 编辑 列 > 并滚动到页面的列链接 部分。选择 Link Text 文本框旁边的箭头,然后选择 #EDIT# 作为列链接文本。

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

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

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

      Click here to see screen shot

      别忘了将编辑栏设为标准报告栏,祝你好运!

      约翰

      【讨论】:

        【解决方案3】:

        这是与 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# 作为您列的链接文本。不要忘记将列的显示类型设置为“标准报告列”。就我个人而言,我也会去掉列标题 - 这是一个必填字段,但您可以将其设置为一个空格。

        【讨论】:

          猜你喜欢
          • 2018-11-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-01-21
          • 2021-09-26
          • 1970-01-01
          • 2020-12-19
          相关资源
          最近更新 更多