【问题标题】:How to bind OData directly to XMLView如何将 OData 直接绑定到 XMLView
【发布时间】:2017-01-27 16:16:39
【问题描述】:

我有一个 UI5 应用程序,其中我的 XMLView 中定义了一个表。我正在使用 OData 调用后端来检索数据。我正在按照以下方式进行操作。

 var oModel = new sap.ui.model.odata.ODataModel("url to data", true);
            var inputModel = new JSONModel();

            oModel.read("/Products",
                null,
                null,
                false,
                function _OnSuccess(oData, response) {
                    var data = oData.results;
                    inputModel.setData(data);
                },
                function _OnError(error) {
                    console.log(error);
                });

            //set model(s) to current xml view
            this.getView().setModel(inputModel, "inputModel");

如何在不必创建 JSON 模型的情况下做到这一点,我的意思是直接将 oData 绑定到 XMLView。

我已经看到它正在完成,但仅使用 JSView,例如:

var oModel = new sap.ui.model.odata.v2.ODataModel("http://admin-   think:88/sap/...",{useBatch : true});
  sap.ui.getCore().setModel(oModel,"model1");

// Create instance of table 
var oTable = new sap.ui.table.Table({
visibleRowCount : 6,
    selectionMode: sap.ui.table.SelectionMode.Single, 
    navigationMode: sap.ui.table.NavigationMode.scrollbar, 
    selectionBehavior: sap.ui.table.SelectionBehavior.RowOnly
});

// First column "Application"
oTable.addColumn(new sap.ui.table.Column({
       label : new sap.ui.commons.Label({
             text : "APPLICATION",
             textAlign : "Center",

       }),
       template : new sap.ui.commons.TextView({
            textAlign:"Center"}).bindProperty("text","model1>Applno"),              
}));

// Bind model to table control    
 oTable.bindRows("model1>/");

这样看来工作量很大。除了使用 XML 视图,我怎么能做这样的事情?

【问题讨论】:

  • 您阅读文档了吗?
  • 我已经阅读了一些(sapui5 api 和其他来源),但说实话我并没有真正理解。介意我指点您指的是什么文档?
  • 我理解为什么有人会否决这样的问题,但恕我直言,UI5 的文档是一个没有适当搜索功能的丛林,这对初学者来说很难。 @polaris:我建议花几天时间完成开发指南中的演练步骤:openui5.hana.ondemand.com/#docs/guide/…
  • 文档的结构应该改进,毫无疑问。但即使是初学者也应该能够找到教程部分和处理绑定的部分......只是我的两分钱......

标签: data-binding odata sapui5


【解决方案1】:

XML 代码:

<mvc:View
    controllerName="sap.m.sample.Table.Table"
    xmlns:l="sap.ui.layout"
    xmlns:mvc="sap.ui.core.mvc"
    xmlns="sap.m">
    <Table id="idProductsTable"
        inset="false"
        items="{Data>/Table}">
        <columns>
            <Column>
                <Text text="Name" />
            </Column>
            <Column>
                <Text text="id" />
            </Column>
        </columns>
        <items>
            <ColumnListItem>
                <cells>
                    <Text
                        text="{Data>name}" />
                    <Text
                        text="{Data>id}" />
                </cells>
            </ColumnListItem>
        </items>
    </Table>
</mvc:View>

JS 代码:

onAfterRendering : function(){
   var oView = this.getView();
   var oTableJSON = new sap.ui.model.json.JSONModel();
   var fnSuccess = function(oEvent,oResponse){
      var Data = {
          Table : oData.results,
      };
      oTableJSON.setData(Data);   
      oView.byId("idProductsTable").setModel(oTableJSON,"Data");
   };
   oModel("/ProductionSet",null,null,true,fnSuccess,fnFail);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 2011-05-05
    • 1970-01-01
    相关资源
    最近更新 更多