在combobox sapui5中提供空白选项

时间:2015-07-30 08:26:24

标签: javascript sapui5 dropdownbox

我正在尝试从json

填充SAPUI5中的下拉框
      new sap.ui.commons.DropdownBox(this.createId('inpExpenseType'), {
                                selectedKey: '{ExpenseType/Id}',
                                editable: '{/CanEditPayment}',
                                required: "{/CanEditPayment}",
                                displaySecondaryValues: true,
                                items: {
                                    path: 'parameters>/Benefits',
                                    template: new sap.ui.core.ListItem(this.createId('liExpenseType'), {
                                        key: '{parameters>Id}',
                                        text: '{parameters>Name}',
                                        additionalText: '{parameters>Code}'
                                    })
                                },
                                layoutData: new sap.ui.layout.GridData({span: 'L6 M6 S6'})
                            }).attachChange(oms.app.ModelUtils.handleListItemChange)

现在基于例如的条件。如果(状态==='已批准'),我希望在下拉框中只显示一个选项。我使用下面的过滤器来完成这项工作。

    if(state==='Approved'){
//this is the option I wish to display in the dropdownbox.
        aFilters.push(new sap.ui.model.Filter("Id", sap.ui.model.FilterOperator.EQ, "33"));
    }
    odropdownbox.bindItems('parameters>/Benefits', oTemplate, null, aFilters); 

现在我的问题是这个单一选项在下拉框中被默认,因此不会触发onChange事件。

我尝试默认空白项目,如下所示

   if(State==='Approved'){
        var oItem = new sap.ui.core.ListItem({
            key: 'dummy',
            text: '',
            additionalText: ''
        });
        odropdownbox.insertItem(oItem,0); 
        odropdownbox.setSelectedKey('dummy');
    }

但是这没有任何区别,我看到单个选项填充为默认值。

我该如何解决这个问题?是否有一些干净的方法来操纵json列表?

1 个答案:

答案 0 :(得分:1)

无需添加新项目。

绑定项目后使用 fireChange ,这样就没有问题。

odropdownbox.bindItems('parameters>/Benefits', oTemplate, null, aFilters);
odropdownbox.fireChange();