Uitableview SAPUI5:如何向ui.table的列菜单添加自定义功能?
我想让我的用户有机会在数据加载到表中后重新格式化表单元格。我认为这样做的一个好方法是向列菜单添加功能。因此,当单击表格列时,菜单会附加标准的“筛选、排序”,但也有一行名为“格式化”,其中提供了一些选项(例如,将数字单元格的格式从55555,55设置为55.555,55) 不幸的是,我无法找到向列菜单添加新行的方法。我的排序和筛选是这样添加的:Uitableview SAPUI5:如何向ui.table的列菜单添加自定义功能?,uitableview,data-binding,formatting,sapui5,number-formatting,Uitableview,Data Binding,Formatting,Sapui5,Number Formatting,我想让我的用户有机会在数据加载到表中后重新格式化表单元格。我认为这样做的一个好方法是向列菜单添加功能。因此,当单击表格列时,菜单会附加标准的“筛选、排序”,但也有一行名为“格式化”,其中提供了一些选项(例如,将数字单元格的格式从55555,55设置为55.555,55) 不幸的是,我无法找到向列菜单添加新行的方法。我的排序和筛选是这样添加的: oTable.bindColumns("/columns", function(index, context) { var columnName
oTable.bindColumns("/columns", function(index, context) {
var columnName = context.getObject().columnId;
return new sap.ui.table.Column({
label:columnName,
template: columnName,
sortProperty: columnName,
filterProperty: columnName,
});
});
如何向列菜单添加新行/功能
更新
这是我的表在xml视图中的外观:
<table:Table id="uploadData" visibleRowCountMode="Auto" rowSelectionChange="tableRowSelectionChange" enableCellFilter="true" fixedColumnCount="0" enableBusyIndicator="true" customData="{Type: 'sap.ui.core.CustomData', key:'table-style-type', value:'custom-styled', writeToDom: true }">
<table:extension>
<m:Button icon="sap-icon://download" press="onDataExportXLS" align="Right" />
</table:extension>
<table:columns>
<!-- Columns dynamically created in controller -->
</table:columns>
<table:rows>
<!-- Rows created in controller -->
</table:rows>
</table:Table>
sap.ui.table.Column有一个聚合,名为
菜单
。它接受单击列时显示的任何自定义菜单项。此聚合采用sap.ui.unified.Menu
控件
在MenuItem
聚合的select
函数中,您可以编写函数来处理选择菜单项时需要执行的操作
签入并单击“数量”列,您将看到一个“我的自定义”菜单项
这里的一段XML代码
JS中的代码
var oColumn=new sap.ui.table.Column({
标签:“某个列名”,
菜单:新建sap.ui.unified.menu({
项目:[新建sap.ui.unified.MenuItem({
文本:“我的自定义菜单”,
选择:功能(oEvent)
{
pressEventOnItem(oEvent);
})
]
})
})
谢谢您的回答!我正在使用一个ui.table,它在控制器中由“bindColumns()”动态填充。因此我尝试将您的代码添加到我的xml视图中,但不起作用。我收到一个错误,说“Element sap.ui.unified.Menu#menu0”对元素sap.ui.table.table的“聚合”列无效我将在我的问题中添加表的xml代码,可能会有帮助吗?对不起,我很想知道如何使用该结构实现它!好的,我只是为所有列添加了您的代码现在我还有一个问题,我的“sortProperty”和“filterProperty”现在,它们被覆盖了。我该如何取回它们呢?在bindColumns的代码中,只需在filterProperty:columnName之后添加菜单
代码,这就是我所做的!oTable.bindColumns(“/columns”,function(index,context){var columnName=context.getObject().columnId;//var technicalName=context.getObject().technicalId;返回新的sap.ui.table.Column({label:columnName,template:columnName,filterProperty:columnName,sortProperty:columnName,menu:new sap.ui.unified.menu({items:[..]})现在就是这样!