📅  最后修改于: 2023-12-03 14:44:55.268000             🧑  作者: Mango
在 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