2015-06-12 30 views
0

是我第一次在這裏發帖。bindAggregation後使用insertItem在Sap.m.Select

我有一個sap.m.Select,顯示了數年後,oDataModel使用「bindAggregation」的方法。

我的想法是在Select with text中創建一個額外的Item:「All Values」和Key:「*」,所以我試圖在「bindAggregation」之後使用「insertItem」,但創建的項目沒有出現在選擇項目列表中,只有來自oDataModel的年份。

下面是代碼:

var yearSelectBox = this.getView().byId("idYearSelectBox"); 
yearSelectBox.setModel(new sap.ui.model.odata.ODataModel("../../../ui/WebContent/Kpi/services/dates.xsodata", true)); 
yearSelectBox.bindAggregation("items", "/Years", new sap.ui.core.Item({ 
      key: "{YEAR}", 
      text: "{YEAR}" 
     }),0); 
yearSelectBox.insertItem(new sap.ui.core.Item({ 
      key: "*", 
      text: "All Values" 
     })); 

我試過bindAggregation之前使用insertItem,使用的ItemIndex = -1,0,20,但什麼都沒有改變。

+0

你能分擔執行代碼的預期結果? –

+0

我很好奇它爲什麼不能正常工作.. 在綁定聚合後插入..之前沒有 我剛剛創建了示例JS小提琴https://jsfiddle.net/gjewbaep/ –

+0

我試過像你一樣,但它沒有工作,所以我創建一個帶有oDataModel數據的jsonModel,並添加像@hagen所說的所有值條目。謝謝! –

回答

2

不幸的是你想要什麼來實現 - 同時使你有意義 - 沒有意義的結合上下文。當您將數據模型綁定到控件時,控件會將其所有渲染都基於該模型。此外,通過任何更改。控制被推回模型 - 這使模型和控制保持同步。因此,一旦綁定到位,您就不能簡單地向聚合添加其他項目。綁定控制哪些項目被添加(更新和刪除),而不是程序性干擾。你有兩個簡單的選項(也許還有其他太):看了你的模型數據轉換成JSON模式,包括你的所有值下拉菜單項,然後綁定下拉控制到JSON模式,或進入加所有值到底層OData數據庫表,以便在下拉菜單中顯示。