在表列中填充Combobox

时间:2014-06-12 04:17:01

标签: sapui5

我已将ODataModel与表绑在一起。在表中,其中一列是下拉列表。该列表有3个值。这对我来说有点混乱,但如何应对这种情况?我是否必须在下拉列表中绑定另一个包含我想要的值的模型,然后将它的属性绑定到来自与表关联的ODataModel的响应?

以下事情是否正确?但是如果我在下拉列表中有更多值,那么可能不是很好....如果我想将下面提到的这个“键”与ODataModel中的“Status”绑定起来怎么办?在这里,我将组合框的“value”属性绑定到来自ODataModel的“StatusText”。 但我想将ListItem的“key”属性与ODataModel(与表绑定)响应中的“Status”联系起来

    oTable.addColumn(
  new sap.ui.commons.ComboBox({
  items: [
                              new sap.ui.core.ListItem({text: "New",key:"1"}).bindProperty("text","StatusText").bindProperty("key","Status"),
                              new sap.ui.core.ListItem({text: "In Process",key:"2"}),
                              new sap.ui.core.ListItem({text: "Completed",key:"3"})
                              ]
                          }).bindProperty("value","StatusText")
);

任何帮助都将不胜感激。

由于

1 个答案:

答案 0 :(得分:0)

这可以在表格中使用,但我认为你的Combobox在绑定方面仍有一些错误。

var oCombobox = new sap.ui.commons.ComboBox({
      items: [
              new sap.ui.core.ListItem({text: "New",key:"1"}).bindProperty("text","StatusText").bindProperty("key","Status"),
              new sap.ui.core.ListItem({text: "In Process",key:"2"}),
              new sap.ui.core.ListItem({text: "Completed",key:"3"})
              ]
          }).bindProperty("value","StatusText");

oTable.addColumn(new sap.ui.table.Column({
    template : oCombobox,
    visible : true,
}));

假设您有一个名为{Firstname}的oData字段,在您的结果类型(表格)中定义,例如对于此表,然后将其绑定在表中:

oTable.addColumn(new sap.ui.table.Column({
    template : new sap.ui.commons.TextView({
        text : "{Firstname}",
        textAlign : sap.ui.core.TextAlign.Center
    }),
    visible : true,
}));

据我了解,您希望从oData服务中获取可能的值,但我认为在下拉/组合框的情况下这是不可能的,因为您从后端获得了一个表,每行都有一个值在一个领域 - >你如何在一个单独的表字段中绑定3个值?

我在自己的服务中实现了下拉,分别从后端调用下拉值:

getDropdown : function() {

// Create JSON data model
var oModel = new sap.ui.model.json.JSONModel();
oModel.loadData("/sap/opu/odata/sap/YOUR_SERVICE/YourEntitySet");
sap.ui.getCore().setModel(oModel);

// Create a DropdownBox
var oDropdown = new sap.ui.commons.DropdownBox("DropdownBox", {
                        text: "{Firstname}",
                    });

oDropdown.setModel(oModel);

var oItemTemplate1 = new sap.ui.core.ListItem({
                        text : "{Firstname}",
                    });

oDropdown.bindItems("/d/results", oItemTemplate1); 
// "/d/results" may vary depending on your path

// return the box
return oDropdown;

},

您可以在表格中使用返回的结果。

e.g。在视图中:

var dropdown = oController.getDropdown();
dropdown.placeAt("content");