2015-09-05 75 views
1
<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是持有产品JSON数组,并且还有一个ModelList服务,它给了我模型列表。所以我应该能够填充一些输入(我没有显示其他输入,因为我可以检索它们的值)并选择产品的型号。但是,如果我有5个产品,我也有5个选择元素,我无法检索每行(每个产品)的选择项目。例如我不能在控制器检索与这些代码值:我怎样才能得到每个sap.m.select元素的行值

var oSelect = this.getView().byId("selectId"); 
var selectedItemObject = oSelect.getSelectedItem().getBindingContext().getObject(); 
var selectedModelName = selectedItemObject.Name; 

因为我有确实5个选择元素,并用这些代码我不能检索的所有选择项对象。任何帮助,将不胜感激。

回答

2

不能我们遍历每一行,然后获取选择控件,然后获取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 
} 
+0

非常感谢你,它工作:) – melomg