我特灵在运行时根据另一个ComoboBox的选定值过滤ComboBox的内容,但不知何故,我的过滤器代码不工作。
文字:
1.我通过ID获得控制权。
1.我得到聚合“项”的绑定
1.创建过滤器
1.将筛选器推到绑定
1.呼叫过滤器
但是什么也没有发生,下面是示例代码:
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结构中,该ComboBox多次出现。
我想我在获取组合框的相关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>
</mvc:View>
2条答案
按热度按时间xytpbqjk1#
可以使用loaditems方法:
qyswt5oh2#
您似乎没有将筛选器设置为正确的组合框:
您在
var oComboBoxControl
中检索ComboBox
,但从oProductGroupControl
获取绑定,并且以后不再使用oComboBoxControl
。您的代码现在看起来很好…我在一个事件处理程序中尝试了它(文本输入更改过滤
ComboBox
),它按预期工作。几点想法:
Contains
代替EQ
吗?