如何更改Oracle APEX交互式网格的行为以将行添加到网格的顶部而不是底部?

时间:2020-10-28 18:51:16

标签: oracle oracle-apex

我正在使用标准的Oracle APEX Interactive网格。当我单击按钮添加新行时,它会将行添加到列表的底部。不方便。如果我先选择一条记录,然后单击“添加行”,它将新行添加到所选记录的下方。

如何更改功能,以便添加一行将行添加到网格顶部?

1 个答案:

答案 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