2

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

但是表单视图必须有条件地只读(这样用户如果没有权限就不能更改任何内容)。

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

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

请帮我怎么做。

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

在此先感谢您的帮助。

4

1 回答 1

2

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


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

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

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

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

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

    • 例如,通过使用 CSS,您可以让您的用户清楚这一点

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

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

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

    • 设置报告的默认链接列以显示报告详细信息视图。
    • 在您的报告上创建另一个链接列,它将链接到您的表单页面。
    • 将第二个链接栏的显示条件或授权设置为仅在用户被授权时显示。
    • 为了防止未经授权的用户访问该页面并操纵 url 以更改记录的值,您必须为该页面设置授权方案。或者过程,无论你真正喜欢什么。或者使用会话状态保护。(我猜是阅读安全性的好时机!)
于 2012-10-01T07:52:35.597 回答