代码之家  ›  专栏  ›  技术社区  ›  THI

在动态创建的VBox UI5应用程序中,Select控件没有itemselect

  •  0
  • THI  · 技术社区  · 6 年前

    我在VBox中有一个select控件,它是在Controller中动态创建的。 即使我已经使用了setSelectedItem,视图仍然显示带有空白的select控件,在下拉列表中我看到绑定的值。在创建“新记录”和“编辑现有记录”时使用相同的函数。如果我将forceSelection设置为true,它将显示项目(在编辑中)以及创建期间(我不希望这样-因为用户可以选择将其保留为空)。

    控制器.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 回复  |  直到 6 年前
        1
  •  1
  •   Rafael López Martínez    6 年前

    您应该将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