2014-02-11 105 views
0

我有一個listbox列表框。用戶列表項選擇成爲新建表的列,所以我必須將列表項的屬性「文本」與列的屬性「文本」綁定;屬性「可見性」和「sortOrder」的計數相同。我無法通過JSONmodel找到屬性「visibility」和「order」來讓listitem將它們與相同的綁定。誰有更多的經驗呢?第二個問題:這裏是我的綁定試用版,這是行不通的,請檢查邏輯。防爆。列表框+的listItem的:如何綁定listitem屬性(從列表框)列屬性,sapui5

var listboxChooseColumns = new sap.ui.commons.ListBox("chooseColumns", { 

                 allowMultiSelect: true, 
                 items: 
                     [ 
                new sap.ui.core.ListItem({ 
                          text: "Export number"  })]}) 

這裏是我試圖道具列表項的 「文本」 綁定JSONmodel方式:

sap.ui.getCore().getModel().setProperty("{/visibleColumns/" + listItem.text +"}", true); 

這裏是表列的一個例子:

table.addColumn(new sap.ui.table.Column({ 
    label : new sap.ui.commons.Label({ 
     text : "{/visibleColumns/columnName}" 
      })})); 

這裏是JSON模型:

sap.ui.getCore().setModel(new sap.ui.model.json.JSONModel({ 
    columns: [ 
       { columnName: "Ëxport Number", 
       visible: true, 
       columnorder: 1 
      }, 
    { 
       columnName: "Functional Location", 
       visible: true, 
       columnorder: 1 
       }] 
})); 

但還是有些地方我錯了。有任何想法嗎 ?

回答

2

我認爲你可以確定可見性和順序,可見的列將是列表框中的選定項目,並且順序將是它們出現在列表框中的順序

因此,當您更改列表框中的內容時(添加/移除項目,更改您的順序列表框),這也會改變你的模型。

如果你現在創建表的列的模板元素,你現在可以簡單地使用「bindColumns」的方法:

var oColumnsTemplate = new sap.ui.table.Column({ 
    label : new sap.ui.commons.Label().bindProperty("text", "columnName") 
}); 
table.bindColumns("/columns", oColumnTemplate); 

,並選定時listItems現在將呈現一個表,以正確的順序列。