<m:Table id="tableId"
inset="false"
mode="MultiSelect"
width = "100%"
fixedLayout="false"
border-collapse="collapse"
items="{
path: 'jsonViewModel>/results',
sorter: {
path: 'ProductId'
}
}">
<columns>
<Column
minScreenWidth="Desktop"
demandPopin="true">
<Text text="Product No" />
</Column>
<Column
minScreenWidth="Desktop"
demandPopin="true"
hAlign="Left">
<Text text="Model" />
</Column>...
</columns>
<items>
<ColumnListItem>
<cells>
<ObjectIdentifier
title="{jsonViewModel>ProductId}"/>
<Select id="selectId"
items="{
path: '/ModelList',
sorter: { path: 'Name' }
}">
<core:Item key="{modelId}" text="{Name}" />
</Select>...
</cells>
</ColumnListItem>
</items>
</Table>
首先,我有一个jsonViewModel,它持有Products JSON数组,还有一个ModelList服务,它给我模型列表。所以我应该能够填充一些输入(我没有显示其他输入因为我可以检索它们的值)并选择产品模型。但是,如果我有5个产品,我也有5个选择元素,我无法检索每行的选择项目(对于每个产品)。例如,我无法在控制器中使用这些代码检索值:
var oSelect = this.getView().byId("selectId");
var selectedItemObject = oSelect.getSelectedItem().getBindingContext().getObject();
var selectedModelName = selectedItemObject.Name;
因为我确实有5个选择元素,并且使用这些代码我无法检索每个选定的项目对象。任何帮助将不胜感激。
答案 0 :(得分:2)
我们不能遍历每一行然后获取select控件然后获取selectedItem吗?我的意思是,
var aItems = this.getView().byId("tableId").getItems();
for(var i =0;i<aItems.length;i++){
var aCells = aItems[i].getCells();
// I know select is at 0th cell, so I can use aCells[0].
var rowSelectedKey = aCells[0].getSelectedItem().getKey();
// once you have the selcetedKey, you can save them in a local array or // model and after the loop, you can work with them
}