【问题标题】:How to display a report row in a form view as readonly in oracle apex如何在 oracle apex 中将表单视图中的报表行显示为只读
【发布时间】:2012-10-01 18:11:21
【问题描述】:

我有一个 apex 报告,其中包含许多具有各种数据类型的行。 现在用户想要详细查看每一行。为此,他们希望它在表单视图中。

但是表单视图必须是有条件的只读的(这样用户如果没有权限就不能改变任何东西)。

我发现,oracle 的交互式报告为“单行视图”生成了一个类似的视图(尽管它不是有条件可编辑的)。

换句话说,我想通过将列旋转到行来显示报表的行。

请帮我看看怎么做。

(创建一个新的表单视图,然后将每个元素设为只读是一种选择,但它有很多问题,不适合超过50个报告。)

提前感谢您的帮助。

【问题讨论】:

    标签: reporting oracle-apex


    【解决方案1】:

    我想说您唯一的选择是创建表单页面,尤其是当您想要编辑时。 IR 没有内置这种功能,如果您要尝试通过 apex_item API 提供它,您仍然需要编写自定义流程。
    在创建时创建报表+表单组合是最快的(选择新页面的表单,然后是带有报表的表单)。
    现在您必须为 IR 选择查询,并将其用作表单查询的基础。
    要使您的项目有条件地只读,您可以对项目使用只读条件。如果您使用plsql function returning boolean,您甚至可以通过apex_util.public_check_authorization 测试授权方案(文档:APEX_UTIL
    除了这条路线非常烦人和耗时之外,我不知道它有这些“很多问题”。


    现在,如果您的表单必须作为一个整体有条件地只读,而不仅仅是某些项目,您也可以通过其他方式解决它。
    对于这两种方式,您都必须创建表单页面:没有办法解决这个问题,并且是最快和最简单的。

    1. 表单页面上的条件javascript+条件处理:

      • 动态动作,在页面加载时触发。执行javascript:

        $('input').prop('readonly', true);
        

        这会将所有输入项设置为只读。

      • 例如,通过使用 CSS,您可以让用户明白这一点

        input[readonly]{ background-color: grey; }
        

      他们仍然可以导航并看到光标,但不会 可以直接编辑。当然,javascript 是不够的。 有人仍然可以通过使用诸如 firebug 或 即开发者工具。要停止这种情况,请更改条件和/或 对您的动态操作进行授权检查(仅在 用户没有权利)和您的记录处理过程(只运行 当用户有权限时)。当用户没有权限并设法 更改值并提交它们,不会将任何内容发送到数据库。

    2. 条件链接+表单页面:

      • 设置报告的默认链接列以显示报告详细信息视图。
      • 在您的报告中创建另一个链接列,该链接列将链接到您的表单页面。
      • 将第二个链接栏的显示条件或授权设置为仅在用户被授权时显示。
      • 为防止未经授权的用户访问该页面并操纵 url 来更改记录的值,您必须设置 虽然是页面的授权方案。或者过程, 真正让你的船漂浮的东西。或使用会话状态 保护。 (我猜是阅读安全知识的好时机!)

    【讨论】:

      猜你喜欢
      • 2022-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-18
      相关资源
      最近更新 更多