在组合框 sapui5 中提供空白选项
providing a blank option in the combobox sapui5
我正在尝试从 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(status==='Approved'),我希望在下拉框中只显示一个选项。我使用下面的过滤器来完成这项工作。
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 列表?
无需添加新项目。
绑定物品后使用fireChange,这样就没有问题了。
odropdownbox.bindItems('parameters>/Benefits', oTemplate, null, aFilters);
odropdownbox.fireChange();
我正在尝试从 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(status==='Approved'),我希望在下拉框中只显示一个选项。我使用下面的过滤器来完成这项工作。
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 列表?
无需添加新项目。
绑定物品后使用fireChange,这样就没有问题了。
odropdownbox.bindItems('parameters>/Benefits', oTemplate, null, aFilters);
odropdownbox.fireChange();