javascript ComboBox的过滤器内容

mbyulnm0  于 2023-05-21  发布在  Java
关注(0)|答案(2)|浏览(139)

我特灵在运行时根据另一个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>
xytpbqjk

xytpbqjk1#

可以使用loaditems方法:

<ComboBox id="idSomeComboBox" loadItems="handleLoadItems" ...

handleLoadItems: function (oControlEvent) {
        var oModelInt = sap.ui.getCore().getModel("data");
        var oDataInt = oModelInt.getData();
        var sValue = oDataInt.value;
        var oFilter1 = new sap.ui.model.Filter('text', sap.ui.model.FilterOperator.EQ, sValue);
        var filters = [oFilter1];
        oControlEvent.getSource().getBinding("items").filter(filters, sap.ui.model.FilterType.Application);
    }
qyswt5oh

qyswt5oh2#

您似乎没有将筛选器设置为正确的组合框:
您在var oComboBoxControl中检索ComboBox,但从oProductGroupControl获取绑定,并且以后不再使用oComboBoxControl
您的代码现在看起来很好…我在一个事件处理程序中尝试了它(文本输入更改过滤ComboBox),它按预期工作。

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吗?

相关问题