Filter 如何在OpenUI5表列上设置筛选器,以便触发筛选

Filter 如何在OpenUI5表列上设置筛选器,以便触发筛选,filter,sapui5,Filter,Sapui5,我将sap.ui.table.table绑定到OData.V4数据源。已正确设置每列的filterProperty 有了它,我可以使用单元格右键单击或在列标题弹出菜单中成功设置过滤器值。这与预期完全相同,因为更新的请求将通过正确的筛选发送到OData源 基于总体需求的原因,我希望将过滤器设置保存到JSON模型中: var oTable = this.byId("table"); var aColumns = oTable.getColumns();

我将sap.ui.table.table绑定到OData.V4数据源。已正确设置每列的filterProperty

有了它,我可以使用单元格右键单击或在列标题弹出菜单中成功设置过滤器值。这与预期完全相同,因为更新的请求将通过正确的筛选发送到OData源

基于总体需求的原因,我希望将过滤器设置保存到JSON模型中:

var oTable = this.byId("table");
            var aColumns = oTable.getColumns();
            var columns={};
            var settings=[];
            var filtered=false;
            for (var i = 0; i < aColumns.length; i++) {
                if(aColumns[i].getFilterValue()) filtered=true;

                settings.push({
                    "index": i,
                    "id":aColumns[i].getId(),
                    "sorted": aColumns[i].getSorted(),
                    "sortOrder": aColumns[i].getSortOrder(),
                    "filterValue":  aColumns[i].getFilterValue(),
                    "filtered":     aColumns[i].getFiltered(),
                    "visible": aColumns[i].getVisible()
                    });
            }
            columns.settings = settings;
            columns.filtered = filtered;
尽管值显示在表上,例如在列标题上设置了过滤器图标,并且也设置了过滤器值,但用于刷新数据的OData查询不包括过滤器值

API文档建议为每个列调用sap.ui.table.table.filter方法,我已经这样做了(如上所述),但没有成功:

oTable.filter(column, columns.settings[columnIndex].filterValue);
如果以交互方式使用列标题contextmenu并“触摸”过滤器值,则会刷新表,包括相应的过滤器


我希望能够恢复一组已保存的筛选和/或排序值,将它们应用于每一列,然后刷新表格以显示筛选的集,因此我最终解决了此问题。在上面的示例中,我假设我正在操作将应用于模型端点的过滤器。事实并非如此。在这个示例代码中,我所做的就是操作表上、下拉框中显示的过滤器

要保存并重新应用筛选器,我必须访问表上的行绑定:

columns.aFilters=oTable.getBinding(“行”).aFilters

但是我仍然有问题,因为有两个过滤器:控件和应用程序绑定。应用程序筛选器如下所示:

columns.aaapplicationfilters=oTable.getBinding(“行”).aaapplicationfilters

然后,当我选择一组不同的过滤器时,它们需要绑定到行聚合,如下所示:

过滤器在哪

columns.a过滤器或columns.a应用程序过滤器

oTable.filter(column, columns.settings[columnIndex].filterValue);
          oTable.bindAggregation("rows", {
                path: sObjectPath,
                parameters: expand,
                filters:filters,
                sorter:sorter
            });