如何在 SAPUI5 的 XML 视图中创建行重复器的排序器和过滤器?
How create sorters and Filters of Row Repeater in XML view of SAPUI5?
我正在尝试在 SAPUI5 的 Xml 视图中创建行转发器元素的排序器和过滤器。
我尝试使用 JavaScript 视图创建但没有运气。
如何在 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>
终于找到这个问题的答案了
过滤器不支持动态绑定。 Filter可以通过javascript控制器来实现。
我从 this question 找到了这个。
来到 Row Repeater Sorters,我通过以下语法尝试了排序器:
<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>
我没有获得任何分类器功能。但是屏幕上出现了按钮。现在我假设不直接支持分拣机。
据我所知,您不能 "completely" 在 XML 中编写排序器(这很遗憾,我完全同意!)
我认为原因是 c:RowRepeaterSorter
的 sorter
属性 的签名;它需要一个 sap.ui.model.Sorter
类型的对象,并且无法通过指定 {path : 'field', descending : true}
这样的对象来正确识别它
解决方案如下:
照常写 RowRepeaterSorter
,不带 sorter
属性:
<c:sorters>
<c:RowRepeaterSorter id="sorter2" text="Sorter 1" />
<c:RowRepeaterSorter id="sorter1" text="Sorter 2" />
</c:sorters>
在控制器的 onAfterRendering
事件处理程序中,设置实际的排序器:
var oSorter1 = this.getView().byId("sorter1");
oSorter1.setSorter(new sap.ui.model.Sorter({path : "field1", descending : "true"}));
我正在尝试在 SAPUI5 的 Xml 视图中创建行转发器元素的排序器和过滤器。
我尝试使用 JavaScript 视图创建但没有运气。
如何在 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>
终于找到这个问题的答案了
过滤器不支持动态绑定。 Filter可以通过javascript控制器来实现。
我从 this question 找到了这个。
来到 Row Repeater Sorters,我通过以下语法尝试了排序器:
<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>
我没有获得任何分类器功能。但是屏幕上出现了按钮。现在我假设不直接支持分拣机。
据我所知,您不能 "completely" 在 XML 中编写排序器(这很遗憾,我完全同意!)
我认为原因是 c:RowRepeaterSorter
的 sorter
属性 的签名;它需要一个 sap.ui.model.Sorter
类型的对象,并且无法通过指定 {path : 'field', descending : true}
解决方案如下:
照常写
RowRepeaterSorter
,不带sorter
属性:<c:sorters> <c:RowRepeaterSorter id="sorter2" text="Sorter 1" /> <c:RowRepeaterSorter id="sorter1" text="Sorter 2" /> </c:sorters>
在控制器的
onAfterRendering
事件处理程序中,设置实际的排序器:var oSorter1 = this.getView().byId("sorter1"); oSorter1.setSorter(new sap.ui.model.Sorter({path : "field1", descending : "true"}));