我已将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")
);
任何帮助都将不胜感激。
由于
答案 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");