SAPUI5 / FIORI - 未触发SmartTable pressItem事件

时间:2017-08-02 14:47:13

标签: jquery xml sapui5 sap-web-ide

我正在尝试在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,但保持原样。非常感谢你的帮助大师。

2 个答案:

答案 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”)。智能表应自动注入所需的列/单元格。