我想向sap.m.List中的每一行添加按钮。我要在该按钮上打开一个弹出窗口,以显示更多详细信息,而无需导航到另一页。
这里有任何代码片段或示例,我如何向每行添加按钮并将其绑定以从另一个模型中获取数据。
答案 0 :(得分:1)
<columns>
<Column id="userNameColumn">
<Text text="userNameLabelText" />
</Column>
<Column id="buttonColumn">
<Text text="Button" />
</Column>
</columns>
<items>
<ColumnListItem>
<cells>
<Input value="{UserName}"/>
</cells>
<Button id="buttonId" icon="sap-icon://add" press="handleResponsivePopoverPress"></Button>
</ColumnListItem>
</items>
答案 1 :(得分:1)
您需要一个StandardListItem
来代替CustomListItem
。您可以在其中添加任何喜欢的控件:
<List headerText="Custom Content" items="{path: '/ProductSet'}" >
<CustomListItem>
<HBox>
<Label text="{ProductName}"/>
<Button text="More Infos" click="onPressMoreInfos" />
</HBox>
</CustomListItem>
</List>
我认为这里最棘手的部分是绑定。一个CustomListItem
绑定到您集合中的单个实体。如果将Button
添加到CustomListItem
(或任何其他控件)中,它们也会自动绑定到特定实体。
因此,在点击处理程序中,您可以执行以下操作:
onPressMoreInfos: function(oEvent) {
var oButton = oEvent.getSource();
// if your model has a name, don't forget to pass it as a parameter
var oContext = oButton.getBindingContext();
// create the popover, either here or in a new method
var oPopover = this.getTheInfoPopover();
// if your model has a name, don't forget to pass it as the second parameter
oPopover.setBindingContext(oContext);
}
然后,您的Popover具有与列表项相同的绑定信息,并且您可以访问特定实体的每个属性。
答案 2 :(得分:0)
您可以将sap.m.CustomListItem用作项目聚合的模板。有一个示例here。您可以向该项目添加任何控件。