选择控件在动态创建的VBox UI5应用程序中没有ItemSelected

时间:2018-08-10 21:22:17

标签: sapui5

我在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}");
            }

1 个答案:

答案 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