You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将SAPUI5表格从ODataModel绑定切换为JSONModel绑定?

切换表格绑定从ODataModel到JSONModel(无需重建表格)

完全不用重新创建表格!这事儿比你想的简单多了,只需要调整表格的绑定配置,就能无缝切换到JSONModel,下面是具体的操作步骤和实用提示:

核心思路

既然你已经有了和原OData数据结构一致的JSONModel,复用现有表格模板+修改绑定源就能搞定,不用从头构建表格。

具体步骤

  1. 确保JSONModel数据结构匹配
    你已经通过服务请求拿到数据并调用setData存入JSONModel了,只要这个JSON的数据字段和OData返回的完全一致(比如OData里是ProductID,JSON里也叫ProductID),原来的列绑定模板就能直接复用,不需要修改任何列的定义。

  2. 重新绑定表格到JSONModel
    先获取表格实例,然后调用bindItems方法替换绑定源:

    // 1. 获取表格控件实例
    const oTable = this.getView().byId("yourTableId");
    // 2. 复用原有的列模板,重新绑定到JSONModel
    oTable.bindItems({
      path: "/", // JSONModel中数据的根路径,如果数据存在子节点就写对应路径,比如"/Products"
      model: "localJsonModel", // 如果你给JSONModel起了别名,这里填写别名;默认模型可省略
      template: oTable.getBindingInfo("items").template // 关键!直接用原来的列模板
    });
    
    • 如果你把JSONModel设为了视图的默认模型,那model参数可以不用写,直接用路径就行。
    • 如果之前的ODataModel是默认模型,建议给JSONModel起个明确的别名(比如local),避免混淆。
  3. 刷新绑定生效
    绑定修改后,调用刷新方法让表格重新渲染数据:

    oTable.getBinding("items").refresh();
    
  4. 后续切换回ODataModel(可选)
    如果之后需要切回后端绑定,用同样的方法重新绑定到ODataModel即可:

    oTable.bindItems({
      path: "/Products", // OData服务的实体集路径
      model: "odataModel", // 你的ODataModel别名,默认模型可省略
      template: oTable.getBindingInfo("items").template
    });
    

实用提示

  • 如果你需要在JSONModel里修改数据,直接调用oJsonModel.setProperty("/path/to/field", newValue),表格会自动更新,而且不会触发后端请求——这正是你要的效果。
  • 如果JSON数据结构和OData略有差异,只需要调整列的绑定路径(比如把{odataField}改成{jsonField}),不用重建整个表格。

内容的提问来源于stack exchange,提问作者C. Ubkcah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:57:43