我正在使用标准的Oracle APEX Interactive网格。当我单击按钮添加新行时,它会将行添加到列表的底部。不方便。如果我先选择一条记录,然后单击“添加行”,它将新行添加到所选记录的下方。
如何更改功能,以便添加一行将行添加到网格顶部?
答案 0 :(得分:0)
您没有提到您使用的顶点版本。没关系,但为了记录,我在apex 20.2中准备了解决方案。
您单击的“添加行”按钮最初与称为“选择-添加-行”的网格动作相关联。您可以通过使用浏览器的开发人员工具检查按钮元素来进行检查-按钮元素的data-action属性应设置为“ selection-add-row”。
具有特定Interactive Grid上下文的操作可以通过javascript进行修改-在运行时(例如动态操作)或Interactive Grid初始化期间(通过使用IG属性的Advanced部分中的JavaScript Initialization Code属性)。
您至少有两种方法可以实现目标。首先是更改“选择-添加-行”动作的行为。我建议使用以下代码作为Javascript初始化代码:
function(config) {
config.initActions = function( actions ) {
actions.remove('selection-add-row');
actions.add({
name: "selection-add-row",
label: "Add row",
iconBeforeLabel: "true",
action: function(event, focusElement) {
let model = $(actions.context).interactiveGrid('getCurrentView').model;
model.insertNewRecord();
}
});
}
return config;}
它将删除操作,并添加具有相同名称的新操作。新操作将新行添加到网格顶部,而不是在选定行下方添加。此处的缺点是您失去了原始的顶点动作-但是如果您不平移使用它就不会造成伤害。
第二种解决方案是不删除原始操作,而是创建执行相同但名称不同的新操作。在这种情况下,您需要以某种方式将“添加行”按钮的data-action属性更改为新操作的名称(或完全删除该按钮,然后创建您自己的按钮)。
有关操作和整个IG自定义的更多信息:https://docs.oracle.com/en/database/oracle/application-express/20.2/aexjs/interactiveGrid.html