微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SAPUI5 过滤表在初始化时动态使用 odata v4

如何解决SAPUI5 过滤表在初始化时动态使用 odata v4

我在 sap hana 中创建了一个视图,我使用 odata v4 公开该视图,这部分运行良好。

现在,我正在尝试使用我的视图中的数据在工作清单的详细信息页面添加一个表格,这些数据由我在详细信息页面显示的对象的 ID 过滤。

到目前为止我所尝试的是直接在 XML 中这样做:

<Table  id="historyTable"
    inset="false"
    items="{
        path: '/wfl_comment',parameters : {
            $filter: 'INSTANCE_ID eq ${ID}'
        }
    }">

但正如我在 SAPUI5 文档中发现的那样,不可能在 XML 中动态执行此操作。

因此,我尝试通过在我的 onSearch 函数中调整示例的 onInit 函数,在来自 SAPUI5 的 documentationsample 之后的控制器中进行过滤。

我的 XML:

<Table  id="historyTable"
        inset="false"
        items="{
            path: '/wfl_comment'
        }">

我的控制器.js

onInit : function () {
    var oviewmodel = new JSONModel({
            busy : true,delay : 0,synchronizationMode : "None"
        });
    this.getRouter().getRoute("object").attachPatternMatched(this._onObjectMatched,this);
    this.setModel(oviewmodel,"objectView");
            
    let oView = this.getView();

    let sValue = oView.byId("ID").getValue();

    let oFilter = new Filter("INSTANCE_ID",FilterOperator.EQ,sValue);

    oView.byId("historyTable").getBinding("items").filter(oFilter,FilterType.Application);
}

这里由于 oFilter 的实例化,我收到以下错误

The following error occurred while displaying routing target with name 'object': Error: Synchronization mode must be 'None' -

但在我的 manifest.json 中,我将同步模式设置为无。这是模型:

"models": {
    "i18n": {
        ...
        }
    },"": {
        "dataSource": "mainService","preload": true,"settings": {
            "operationMode": "Server","groupId": "$direct","synchronizationMode": "None","autoExpandSelect":true
        }
    }
}

当我实例化 sValue 时,我还尝试设置静态值而不是 oFilter,但它也不起作用。

我该如何解决这个错误?这是为我只想在初始化期间过滤一次的表过滤数据的正确方法吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。