我正在尝试在sap UI5中为SmartTable控件附加itemPress事件。视图以XML定义并绑定到OData。
<mvc:View
controllerName="myapp.controller.App"
...>
<App>
<pages>
<Page title="title">
<content>
<smartTable:SmartTable
id="kubas"
...
tableType="ResponsiveTable"
...>
</smartTable:SmartTable>
</content>
</Page>
</pages>
</App>
</mvc:View>
因为对于ResponsiveTable,后面的表是sap.m.Table我试图在控制器的onAfterRendering事件中附加itemPress事件。那没起效。然后我试图覆盖表本身的onAfterRendering并附加事件 - 相同的效果,事件没有触发。
onAfterRendering : function(){
var tTable = this.byId("kubas");
var oTable = this.byId("kubas").getTable(); //sap.m.table
console.log(oTable.getMetadata().getName());
oTable.setMode(sap.m.ListMode.SingleSelectMaster);
oTable.onAfterRendering = function(){
console.log("OnAfterRendering");
this.attachItemPress(function(oEvent){
console.log("Pressed!!");
});
}
我在这里做错了什么,有什么建议吗?有没有办法在XML for SmartTable中注册它?我不想在XML视图中切换到sap.m.table,但保持原样。非常感谢你的帮助大师。
答案 0 :(得分:1)
那是因为这些项目是“无效”。检查文档here
&GT; attachItemPress(oData?,fnFunction,oListener?):sap.m.ListBase 将事件处理程序fnFunction附加到此sap.m.ListBase的itemPress事件。 调用时,事件处理程序的上下文(它的this)将被绑定到oListener(如果指定),否则它将绑定到此sap.m.ListBase本身。
&GT; 按下某个项目时触发,除非该项目的类型属性为非活动。
请使用以下代码,attachDataReceived
的{{1}}正在运行。
SmartTable
谢谢!
答案 1 :(得分:0)
我认为没有XML中的表定义就没有机会这样做。但我想你可以省略“列”聚合定义,而“items”只包含“ColumnListItem”和所需的事件处理程序(没有“cells”)。智能表应自动注入所需的列/单元格。