笔者这篇教程介绍了如何在 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
提供了强大的列扩展功能,但是过度使用可能会增加应用的复杂性和维护成本。因此,在使用时需要谨慎考虑是否真的需要对列进行动态调整。
- ResponsiveTableColumnsExtension Elements Fiori SAPresponsivetablecolumnsextension elements fiori extensionapi elements fiori sap elements模式fiori sap elements环境fiori sap propertyannotations elements fiori sap elements fiori sap analytical elements fiori list extension elements fiori odata 框架elements优势fiori ui5-local elements fiori local