2015-09-05 73 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