如何获取按下列表项的详细信息?

时间:2018-07-03 12:55:37

标签: sapui5

我已经建立了一个表,它看起来如下:

enter image description here

和代码:

<ColumnListItem type="Detail" detailPress="onDetailPress">
    <cells>
        <ObjectIdentifier title="{Customer>CustomerID}" text="{Customer>CompanyName}"/>
        <Text text="{Customer>ContactName}"/>
        <Text text="{Customer>Address}"/>
        <Text text="{Customer>City}"/>
    </cells>
</ColumnListItem> 

当我按铅笔时,它将发出事件detailPress

    onDetailPress: function(oEvent) {
        console.log(oEvent.getParameters());
    } 

事件对象的返回类型getParameters()方法调用是什么? doc没有提到任何类型。

如何使用oEvent获取按下列表项的客户详细信息。

调试器说:

enter image description here

2 个答案:

答案 0 :(得分:1)

oEvent是事件对象。 getParameters()返回一个JSON对象。因此类型为here

在这种情况下,它是一个空对象,但是还有其他事件会返回对象内部的参数,例如this one

如果要获取customerID,只需从单击的行中获取模型路径,并从模型中获取属性。这是代码段:

onDetailPress: function(oEvent){
    var oColumnListItem = oEvent.getSource();
    var sPath = oColumnListItem.getBindingContext("Customer").getPath();
    var sCustomerIDPath = sPath + "/CustomerID";
    var oModel = oColumnListItem.getModel("Customer")
    console.log(oModel.getProperty(sCustomerIDPath));
}

答案 1 :(得分:1)

您可以像这样获得绑定到行的对象

onDetailPress: function(oEvent) {
    var oObject = oEvent.getSource().getBindingContext("Customer").getObject();
    // from this object, you can do oObject.CustomerID
}