Uitableview SAPUI5:如何向ui.table的列菜单添加自定义功能?

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

我想让我的用户有机会在数据加载到表中后重新格式化表单元格。我认为这样做的一个好方法是向列菜单添加功能。因此,当单击表格列时,菜单会附加标准的“筛选、排序”,但也有一行名为“格式化”,其中提供了一些选项(例如,将数字单元格的格式从55555,55设置为55.555,55)

不幸的是,我无法找到向列菜单添加新行的方法。我的排序和筛选是这样添加的:

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:[..]})现在就是这样!