如何根据另一个组合框的选择更新一个组合框的模型?

时间:2016-06-29 07:14:54

标签: sapui5

我在表格行中有两个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);
}

建议我正确发挥它的一些选择。

1 个答案:

答案 0 :(得分:0)

在第一个组合的selectionChange事件处理程序中,您应该设置第二个组合的filter的{​​{1}} ContextBinding。例如:

items

要查看此操作,请查看this jsbin

正如对此答案的回答所述,上面的例子仅显示了如何更改组合框的绑定。由于你的组合框嵌入在一个表格中,你首先必须弄清楚哪个组合框需要改变,因为表格中有几个。

这将是我的建议所以请看oEvent.getSource(),它应该导致刚刚更改的组合。从那里,您可以使用getParent()在控件层次结构中上升,直到您到达该行。在该行中,您应该有多个列,其中一列包含SecondCombo框。如果您知道哪一行包含您的SecondCombo,您将能够使用byId获取它并按前面所述设置过滤器。