如何在sap Ui5中添加组合框事件

时间:2014-12-22 10:47:28

标签: sapui5

我在一个表中使用组合框,其中有两个字段为男性和女性,如果我将该值更改为存储在JSON模型数据中..如何使用事件...

以下是我的代码

oTable.addColumn(new sap.ui.table.Column( {
                 label: new sap.ui.commons.Label({text: "Gender"}),
                 template: new sap.ui.commons.ComboBox(
                                {items: [new sap.ui.core.ListItem({text: "Female"}),
                                new sap.ui.core.ListItem({text: "Male"})]}).bindProperty("value","gender"),
                 sortProperty: "gender",
                 filterProperty: "gender",                   
                 enabled : true,                     
                 change: function(oEvent){
                    sap.ui.getCore().byId("gender").setValue(oEvent.oSource.getSelectedItemId());
                 },
                 width: "75px"
                 }));
    function change(oEvent){
                 var bEnabled = oEvent.getParameter("enabled");
                 // modify the enabled property value in the model to reflect changes
                 oModel.setData({enabled: bEnabled}, true); // true means merge the data instead of replacing
      }; 

但它没有反映价值观......请更正代码。

1 个答案:

答案 0 :(得分:0)

  1. 你应该将你的`change`函数移动到组合框,当前是附加到列(没有这样的事件)。
  2. 你可以把你的`bindProperty`调用放到构造函数
  3. 在事件功能中,您必须获取模型并更改其值。
  4. new sap.ui.commons.ComboBox({
        value: "{gender}",
        items: [
            new sap.ui.core.ListItem({
                text: "Female"
            }), new sap.ui.core.ListItem({
                text: "Male"
            })
        ],
        change: function(oEvent) {
            var newValue = oEvent.getParameter("newValue");
            var bindingPath = this.getBindingPath("value");
            this.getModel().setProperty(bindingPath, newValue);
        }
    })