关于 SAP Fiori Elements 应用的 ResponsiveTableColumnsExtension 扩展

笔者这篇教程介绍了如何在 SAP Fiori Elements 应用的 manifest.json 里注册 Extension fragment,从而给 List Report 应用的 Table 区域新增自定义列

请大家注意下图高亮的扩展:ResponsiveTableColumnsExtension|SEPMRA_C_PD_Product

运行时,这个扩展的定义,在 Component._getManifestEntry 方法里被解析出来:

在 SAP Fiori Elements 中,manifest.json 文件是用来定义应用的配置和元数据的。extends 区域是用来维护 SAP Fiori Elements 应用的扩展的。其中,ResponsiveTableColumnsExtension 是一个特定的扩展,主要用于扩展响应式表格的列。

在响应式表格中,你可以使用 ResponsiveTableColumnsExtension 来添加、删除或修改列。这个功能提供了对表格列在运行时的调整,使得你可以在应用运行时动态改变列的属性,如列的可见性、列的排序、列的过滤等。

假设你有一个销售订单的 Fiori Elements 应用,展示订单列表的响应式表格中有许多列,如订单号、客户名称、订单日期等。你想在运行时改变订单日期列的可见性,可以通过 ResponsiveTableColumnsExtension 来实现。

以下是一个简单的示例,展示了如何在 manifest.json 文件中使用 ResponsiveTableColumnsExtension 扩展:

{
    
    
  "sap.ui5": {
    
    
    "extends": {
    
    
      "extensions": {
    
    
        "sap.ui.controllerExtensions": {
    
    
          "sap.suite.ui.generic.template.ListReport.view.ListReport": {
    
    
            "ControllerName": "my.custom.Controller",
            "controllerExtensions": {
    
    
              "sap.suite.ui.generic.template.ListReport.control.ListReportController": {
    
    
                "methods": {
    
    
                  "onInit": {
    
    
                    "code": "this.extensionAPI.attachPageDataLoaded(function(oEvent) { this.extensionAPI.getColumnExtension().forEach(function (oColumnExtension) { if (oColumnExtension.getColumn().getId() === 'SalesOrderDate') { oColumnExtension.setColumnVisible(false); } }); }.bind(this));"
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

上面的示例代码会在销售订单列表加载数据后,隐藏订单日期列。首先,我们在 sap.ui.controllerExtensions 下定义了一个新的控制器 my.custom.Controller。然后,在控制器的 onInit 方法中,我们使用 extensionAPI.attachPageDataLoaded 方法来监听页面数据加载事件。当数据加载完毕后,我们通过 extensionAPI.getColumnExtension 方法获取到所有的列扩展,然后遍历每一个列扩展,找到 id 为 SalesOrderDate 的列扩展,通过调用其 setColumnVisible 方法将其设为不可见。

需要注意的是,虽然 ResponsiveTableColumnsExtension 提供了强大的列扩展功能,但是过度使用可能会增加应用的复杂性和维护成本。因此,在使用时需要谨慎考虑是否真的需要对列进行动态调整。

猜你喜欢

转载自blog.csdn.net/i042416/article/details/132149998