如何在SAP UI5的XML视图中创建行中继器的分类器和过滤器?

时间:2015-01-28 14:13:15

标签: sap sapui5

我正在尝试在SAP UI5的Xml视图中创建行转发器元素的排序器和过滤器。

我尝试使用JavaScript View创建但没有运气。

如何在XML视图中编写行中继器的排序器和过滤器?

<c:RowRepeater rows="{path: bindingpath}" id="rowRepeater" title="Companies Filter">

           <c:filters>
             <c:RowRepeaterFilter id="filter1" text="Filter Text Goes Here" filter="{path: bindingpath, operator: "EQ", value: 'my value'}">

                </c:RowRepeaterFilter>

           <c:filters>
            <c:sorters>
                <c:RowRepeaterSorter id="sorter2" text="Sorter 1" sorter="{path: bindingpath, descending: true}">

                </c:RowRepeaterSorter>
                <c:RowRepeaterSorter id="sorter1" text="Sorter 2"  sorter="{path: bindingpath, descending: true}">

                </c:RowRepeaterSorter>

            </c:sorters>
            <core:Title text="Companies Filter"></core:Title>
            <c:rows>
                <Panel>
                    <content>

                        <!-- Display Binding Elements -->

                    </content>
                </Panel>
            </c:rows>
        </c:RowRepeater>

2 个答案:

答案 0 :(得分:2)

据我所知,你不能完全&#34;用XML编写分类器(这很遗憾,我完全同意!)

我认为其原因是c:RowRepeaterSorter sorter属的签名;它需要一个sap.ui.model.Sorter类型的对象,并且在指定像{path : 'field', descending : true}

之类的对象时无法正确识别它

解决方案如下:

  1. 按照正常情况编写RowRepeaterSorter,不使用sorter属性:

    <c:sorters>
        <c:RowRepeaterSorter id="sorter2" text="Sorter 1" />
        <c:RowRepeaterSorter id="sorter1" text="Sorter 2" />
    </c:sorters>
    
  2. 在控制器的onAfterRendering事件处理程序中,设置实际的分拣机:

    var oSorter1 = this.getView().byId("sorter1");
    oSorter1.setSorter(new sap.ui.model.Sorter({path : "field1", descending : "true"}));
    

答案 1 :(得分:0)

最后我找到了这个问题的答案。

过滤器不支持动态绑定。过滤器可以通过javascript控制器实现。

我是从this question找到的。

来到行中继器分拣机我按照语法尝试了分拣机:

<c:RowRepeater rows="{path: bindingpath}" id="rowRepeater" title="Companies Filter">


                <c:sorters>
                    <c:RowRepeaterSorter id="sorter2" text="Sorter 1" sorter="{path: bindingpath, descending: true}">

                    </c:RowRepeaterSorter>
                    <c:RowRepeaterSorter id="sorter1" text="Sorter 2"  sorter="{path: bindingpath, descending: true}">

                    </c:RowRepeaterSorter>

                </c:sorters>
                <core:Title text="Companies Filter"></core:Title>
                <c:rows>
                    <Panel>
                        <content>

                            <!-- Display Binding Elements -->

                        </content>
                    </Panel>
                </c:rows>
            </c:RowRepeater>

我没有获得任何分拣机功能。但按钮即将出现在屏幕上。现在我假设不直接支持分拣机。