📜  oracle apex 交互式网格集记录字段只读 - Javascript (1)

📅  最后修改于: 2023-12-03 14:44:55.268000             🧑  作者: Mango

Oracle APEX 交互式网格集记录字段只读 - JavaScript

在 Oracle APEX 中,交互式网格是一种非常常见和重要的组件,提供了方便的数据展示和编辑功能。但是,在一些场景下,我们可能需要将某些记录的某些字段设置为只读,以确保数据的安全性和准确性。这时候,我们可以使用 JavaScript 来实现这个功能。

实现方法

我们可以使用 APEX 内置的 JavaScript API 和 jQuery 的选择器来实现此功能。以下是具体步骤:

1.在交互式网格的高级 -> JavaScript 初始化代码 中引入 jQuery 库:

# 区块标题(Heading)代码块
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

2.在交互式网格的 高级 -> 原始渲染代码 中获取每一行的 ID:

# 区块标题(Heading)代码块
function(config) {
   // Get the grid widget
   var grid = apex.region("myGrid").widget().interactiveGrid("getViews","grid");

   // Traverse through all the active records
   grid.model.forEach(function(model, recordId) {
      // Get the row element
      var row = grid.view.row(model);

      // Get the row ID
      var rowId = row.attr("id");

      // TODO: Add your code here to make the required fields read-only
   });
}

3.通过选择器找到要设置为只读的字段,给它们添加 readonly 属性:

# 区块标题(Heading)代码块
function(config) {
   // Get the grid widget
   var grid = apex.region("myGrid").widget().interactiveGrid("getViews","grid");

   // Traverse through all the active records
   grid.model.forEach(function(model, recordId) {
      // Get the row element
      var row = grid.view.row(model);

      // Get the row ID
      var rowId = row.attr("id");

      // Find the element by ID and make it readonly
      $(`#${rowId} input[name="MY_FIELD_NAME"]`).attr("readonly", "readonly");
   });
}

其中,MY_FIELD_NAME 为要设置为只读的字段的名称。

总结

通过上述步骤,我们可以轻松地将交互式网格中的指定字段设置为只读。需要注意的是,这种方法只适用于静态页面。如果你的网格是动态生成的,你需要相应地修改脚本。

参考文献:https://stackoverflow.com/questions/40603821/apex-interactive-grid-set-readonly-during-edit