【问题标题】:How to convert OData model to entityset in sap ui5如何在 sap ui5 中将 OData 模型转换为实体集
【发布时间】:2015-06-29 08:36:42
【问题描述】:

我想在sapui5 explored sample 中使用智能表,但问题是我有一个 OData 模型,该示例仅显示了我们如何处理与模拟数据的绑定,而且我不了解 metadata.xml 文件.我猜 oData 模型也有自己的元数据文档。这是我在控制器中的代码:

this.DataPath = "QuarterPerformanceSet";
var oModel = new sap.ui.model.odata.ODataModel(model.Config.getServiceUrl(), true, model.user, password); 
oModel.setCountSupported(false);
oSmartTable.setModel(oModel);
oSmartTable.setEntitySet(this.DataPath);

但它不起作用。我收到了这个错误:

无法从 ./Component-changes.json 加载 Component-changes.json。检查“找不到文件”或解析错误。原因:未找到 -

getChanges' 失败:-

如何使用我的 odata 模型设置 entitySet?

我的看法:

<smartTable:SmartTable id="idSmartTable" tableType="Table" 
useExportToExcel="true" useVariantManagement="false" 
useTablePersonalisation="true" header="Line Items" showRowCount="true"
persistencyKey="SmartTableAnalytical_Explored" enableAutoBinding="true"/>

如果有人可以提供帮助,请提前感谢您。

更新2:我根据discussion重新绑定表

this.DataPath = "QuarterPerformanceSet";
var oModel = new sap.ui.model.odata.ODataModel(model.Config.getServiceUrl(), true, model.user, password); 
oModel.setCountSupported(false);
var oSmartTable = this.getView().byId("idSmartTable");
oSmartTable.setModel(oModel);
oSmartTable.setEntitySet(this.DataPath);
oSmartTable.rebindTable();

很遗憾,但我仍然遇到同样的错误。

【问题讨论】:

    标签: javascript odata sapui5


    【解决方案1】:

    您需要传递实体集的名称,而不是模型实例。例如,如果您有客户定义的实体集,您只需执行以下操作:

    oSmartTable.setEntitySet("Customers");
    

    或将属性 entitySet 添加到您的表声明中。

    <smartTable:SmartTable id="idSmartTable" entitySet="ENTITY_SET" .../>
    

    【讨论】:

    • 我是否应该像 oSmartTable.setModel(oModel); 那样设置模型;
    • 是的,但如果模型对包含表的视图是已知的,则不需要这样做。在这种情况下,UI5 应该自动传播模型。
    • 我更新了我的问题,但它仍然不起作用。请你再看一遍这个问题。
    • 谢谢我一开始忘记添加过滤器,因此我的表格现在没有显示任何工作。
    • 那么问题得到了解答还是您还有问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多