有没有办法过滤sap.m.Tree?

Is there any way to filter sap.m.Tree?

我是 SAPUI5 组件的新手。

有没有办法将 $filter 应用于 sap.m.Tree?我觉得很奇怪。

我目前正在使用 $filter 选项来限制来自后端的数据(通过使用 WHERE 子句,来自 $filter 选项),所以我必须 $filter 来传递我的参数。

我的控制器:

this.oCharTable = this.getView().byId("CharTree")

var aFilterChar = new Filter("Matnr", FilterOperator.EQ , filter_base[2])

this.oCharTable.bindElement({
    path:  "/AUSP_ENTITY",
    model: "AUSP_DATA",
    filters: [aFilterChar],
    parameters: {
        NumberOfExpandedLevels : 2
    }
});

它是 $batch 负载:

GET AUSP_ENTITY?$filter=HierarchyLevel%20eq%20%270%27&$skip=0&$top=100 HTTP/1.1
sap-cancel-on-close: true

这取决于您的数据源:

  • 如果您有 odata v2,则无法过滤儿童。这根本不受 v2
  • 支持
  • 如果您有 odata v4,则树绑定不支持。好消息,它在路线图上 https://github.com/SAP/openui5/issues/2728
  • 如果您预加载所有数据并将其放入 json 模型中。您可以使用 vanilla js
  • 随意过滤

基于给定的答案。您可以根据需要使用任何已通过的过滤器忽略 v2 规范并在后端进行过滤。

哦,我想我找到了解决方案 - 问题出在后端!

感谢 this answer,使用暂停 - 恢复让我发送正确的 GET 请求,例如

../AUSP_ENTITY?$filter=HierarchyLevel%20eq%20%270%27%20and%20(Matnr%20eq%20%27SomeKindofMaterialHere%27)&$skip=0&$top=100

我将后端更改为 select 正确的值,并将值返回给前端。

  • 对于可能会阅读我的问题的未来领导者,我更改了我的后端以不仅采用 1 个选项(这一个,可能是 Matnr),而且还采用 'HierarchyLevel',必须小心的

详细 - 我使用 $filter 参数从 CDS View 获取数据,这可以将 select 结果降低到合理的水平。

所以我重新定义DPC_EXTClass,拆分我的$filter输入,并将其放入我的参数中,并将结果放入结果table。

TL;dr:如果您在树视图上使用 $filter:请检查 'return' 后端。那里可能有问题。