如何将listitem属性(来自列表框)与列属性sapui5绑定

时间:2014-02-11 08:50:39

标签: json data-binding sapui5 listitem

我有一个包含listitems的列表框。用户列表项选择成为新创建表的列,因此我必须将listitem的属性“text”与列的属性“text”绑定;属性“visibility”和“sortOrder”的计数相同。我找不到listitem的属性“visibility”和“order”来通过JSONmodel将它们绑定到相同的属性。谁有更多的经验呢?第二个问:这是我的绑定试用,哪个不行,请检查逻辑。防爆。列表框+ listItem:

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

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

这是我尝试将listitem的prop“text”与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}"
             })}));

这里是JSONmodel:

 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
              }]  
 }));

但仍然在某个地方我出错了。有任何想法吗 ?

1 个答案:

答案 0 :(得分:2)

我认为您也可以确定可见性和顺序;可见列将是ListBox中的选定项,顺序将是它们在ListBox中的显示顺序

因此,当您更改列表框中的内容(添加/删除项目,更改列表框中的顺序)时,这也会改变您的模型。

如果您现在为表的列创建模板元素,现在只需使用'bindColumns'方法:

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

并且所选的ListItem现在将以正确的顺序呈现包含列的表。