我想在运行时根据另一个ComoboBox的选定值过滤ComboBox的内容,但不知怎的,我的过滤器代码不起作用。
用语言说: 1)我通过ID获得控制权。 2)我得到聚合"项目"的绑定。 3)创建一个过滤器 4)将过滤器推到绑定处 5)呼叫过滤器。
但没有任何反应,这里是示例代码:
var oComboBoxControl = this.getView().byId(someID);
var oBindingComboBox = oComboBoxControl.getBinding("items");
var aFiltersComboBox = [];
var oFilterPComboBox = new sap.ui.model.Filter("SomeAttribute", sap.ui.model.FilterOperator.EQ, 'SOMESTRING');
aFiltersComboBox.push(oFilterComboBox);
oBindingComboBox.filter(aFiltersComboBox);
我在桌子上使用相同的代码,它就像一个魅力。我没有遇到问题。这是ComboBox的一般问题
问题在于代码可以在视图中使用独立的ComboBox,但是组合框嵌入到具有此comboBox的多个出现的List结构中。
我认为我在获取组合框的相关ID方面做错了。
var sSOMEID = oEvent.oSource.getParent()。getParent()。getParent()。getItems()[1] .getItems()[0] .getCustomControl()。getId();
这是动态生成控制ID获取它们的正确方法吗?不确定。
<mvc:View
controllerName="sap.m.sample.CustomListItem.List"
xmlns:l="sap.ui.layout"
xmlns:core="sap.ui.core"
xmlns:mvc="sap.ui.core.mvc"
xmlns="sap.m">
<List headerText="Custom Content" mode="Delete" items="{path: '/SomeSet'}" >
<CustomListItem>
<HBox>
<core:Icon size="2rem" src="sap-icon://attachment-photo" class="sapUiSmallMarginBegin sapUiSmallMarginTopBottom" />
<VBox class="sapUiSmallMarginBegin sapUiSmallMarginTopBottom" >
<ComboBox id="idSomeComboBox"
items="{
path: '/SomeSet', templateShareable: true,
sorter: { path: 'Description' }
}"
>
<core:Item key="{ID}"
text="{Description}"/>
</ComboBox>
</VBox>
</HBox>
</CustomListItem>
</List>
答案 0 :(得分:0)
您似乎没有将过滤器设置为正确的组合框:
您可以在var oComboBoxControl
中检索组合框,但是从oProductGroupControl
获取绑定,之后再也不会使用oComboBoxControl
doFilter : function(oEvent) {
var filter = oEvent.getParameter("newValue");
var oComboBoxControl = this.getView().byId("cb");
var oBindingComboBox = oComboBoxControl.getBinding("items");
var aFiltersComboBox = [];
var oFilterComboBox = new sap.ui.model.Filter("text", "Contains", filter);
aFiltersComboBox.push(oFilterComboBox);
oBindingComboBox.filter(aFiltersComboBox);
}
一些想法:
Contains
代替EQ
吗?