我在表格行中有两个sap.m.ComboBox。第二个ComboBox中的项目因第一个ComboBox的选择而异。以下是我编写的代码,但它没有刷新第二个ComboBox中的项目。
var firstCombo = new sap.m.ComboBox({items:[new sap.ui.core.Item({text:"EmployeeLevel4"}),
new sap.ui.core.Item({text:"EmployeeLevel3"})],
selectionChange : oController.comboBoxMapping});
var secondCombo = new sap.m.ComboBox("SecondComboBox",{});
在控制器
中
comboBoxMapping:function(oEvent){
var filterMappingModel = \\getting the model;
sap.ui.getCore().byId("SecondComboBox").setModel(filterMappingModel);
sap.ui.getCore().byId("SecondComboBox").bindItems('/', new sap.ui.core.Item({key: '{Skill}',text: '{Skill}'}),true);
}
建议我正确发挥它的一些选择。
答案 0 :(得分:0)
在第一个组合的selectionChange
事件处理程序中,您应该设置第二个组合的filter
的{{1}} ContextBinding
。例如:
items
要查看此操作,请查看this jsbin。
正如对此答案的回答所述,上面的例子仅显示了如何更改组合框的绑定。由于你的组合框嵌入在一个表格中,你首先必须弄清楚哪个组合框需要改变,因为表格中有几个。
这将是我的建议所以请看oEvent.getSource(),它应该导致刚刚更改的组合。从那里,您可以使用getParent()在控件层次结构中上升,直到您到达该行。在该行中,您应该有多个列,其中一列包含SecondCombo框。如果您知道哪一行包含您的SecondCombo,您将能够使用byId获取它并按前面所述设置过滤器。