我在VBox中有一个选择控件,该控件在Controller中动态创建。 即使我使用了setSelectedItem,该视图仍然显示带空白的选择控件,并且在下拉菜单中我看到了绑定的值。 “创建新记录”和“编辑现有记录”时使用相同的功能。如果我将forceSelection = true设置为true,它将显示该项目(处于编辑状态)以及在创建过程中(我不希望这样做-因为用户可以选择将其保留为空白)。
为什么下面的代码不分配选定的值(所以我不必使用forceSelection = true)?
Controller.js
oNewVBox.insertItem(new sap.m.Label({
text: "{order>/" + Type + "/" + i + "/labelText}",
required: "{order>/" + Type + "/" + i + "/labelReq}"
}));
// If Defaults exist then Field is drodpown
if (currentValue.DefaultValue !== "") {
oNewField = new sap.m.Select({
enabled: "{order>/" + Type + "/" + i + "/fieldEnabled}",
forceSelection: true,
width: "90%",
// Add dropdoen Items
items: [new sap.ui.core.ListItem({
key: "{order>/" + Type + "/" + i + "/DefaultValue}",
text: "{order>/" + Type + "/" + i + "/DefaultValue}"
})],
valueState: "{order>/" + Type + "/" + i + "/ValueState}",
valueStateText: "{order>/" + Type + "/" + i + "/ValueStateText}"
});
// Set key
oNewField.setSelectedItem("{order>/" + Type + "/" + i + "/value}");
}
答案 0 :(得分:1)
您应该将ID或sap.ui.core.Item对象传递给setSelectedItem函数。您无法尝试在其中进行绑定。您可以通过属性或聚合来进行数据绑定,但是“绑定函数的参数”是没有意义的。
从您的代码中,我想您正在尝试使用存储在“订单”模型中的商品“键”来选择商品。因此,尝试更改此内容:
oNewField.setSelectedItem("{order>/" + Type + "/" + i + "/value}");
为此
var selectedKey = this.getView().getModel('order').getProperty("/" + Type + "/" + i + "/value")
oNewField.setSelectedKey(selectedKey); // Passing the Item 'key' as selector
//oNewField.setSelectedItem(selectedKey); // Only if in your model you have saved the sap.ui.code.Item ID