SAPUI5在XML视图中列出与过滤数据的绑定

时间:2016-12-25 13:35:41

标签: data-binding sapui5 jsonmodel

我希望你做得很好

目前我正在尝试将过滤后的数据绑定到xml视图中的列表控件,在控制器的oninit事件中,odata服务网址就像这样

http://mikmo.mylocalhost.com/MIKMOWCFDataService.svc/view_VendorGroup?$滤波器=厂商ID%20当量%201

我使用下面的代码

var sListURI = "http://mikmo.mylocalhost.com/MIKMOWCFDataService.svc";
        var oListModel = new sap.ui.model.odata.ODataModel(sListURI, false);
        var oListModelJson = new sap.ui.model.json.JSONModel();
        oListModel.oHeaders = {
            "DataServiceVersion": "2.0",
            "MaxDataServiceVersion": "2.0"
        };
        oListModel.read("/view_VendorGroup", null, ["$filter=VendorID eq " + window.VendorID], null, function(oData, oResponse) {
            oListModelJson.setData(oData);
            oListModelJson.loadData(oData);

        }, null);

        //oListModelJson.bindList(sPath, [oContext], [aSorters], [aFilters], [mParameters])
        oListModelJson.attachRequestCompleted(function(oData, oEvent) {

        });
        myList.setModel(oListModelJson, "VendorGroups");

并在XML视图中

<List growing="true" growingThreshold="100" headerText="{i18n&gt;businessareas}" id="lstVendorGroups">
                            <items>
                                <!--<ObjectListItem title="{VendorGroups>GroupName}" type="Active" press=".onItemSelected" />  -->
                                <StandardListItem id="stListItem" />
                            </items>
                        </List>

我需要知道的是如何将attachRequestCompleted方法中的列表项与数据绑定 提前致谢

1 个答案:

答案 0 :(得分:1)

您需要绑定sap.m.List的聚合“项”。 我会在你的代码中修改以下内容:

  1. oDataModel的读取方法:使用oDataModel执行读取操作后,您将获得成功处理程序,您可以在本地JSON模型中设置数据。代码行:oListModelJson.loadData(oData);不是必需的,因为上一行代码是:oListModelJson.setData(oData); - 已经将数据设置为本地JSON模型。

  2. AttachRequestCompleted of JSON Model:我不会使用这个方法,因为它是在将数据(通过AJAX调用)直接加载到JSON Model时使用的。但是在这里,当你使用oData Model来获取时,它不是必需的。所以我将删除处理程序。

  3. 在您的XML视图中,您需要告诉sap.m.List,它是您的对象数组所在的路径。考虑到您已应用过滤器,您的JSON模型将包含以“results”关键字开头的数据。如果以下代码没有帮助,请粘贴您的JSON模型数据:

  4. XML格式的代码:

    <List growing="true" growingThreshold="100" headerText="{i18n&gt;businessareas}" id="lstVendorGroups" items="{VendorGroups>/results}">
                                <items>
                                    <!--<ObjectListItem title="{VendorGroups>GroupName}" type="Active" press=".onItemSelected" />  -->
                                    <StandardListItem id="stListItem" />
                                </items>
                            </List>
    

    我的修改后控制器中的代码:

    var sListURI = "http://mikmo.mylocalhost.com/MIKMOWCFDataService.svc";
            var oListModel = new sap.ui.model.odata.ODataModel(sListURI, false);
            var oListModelJson = new sap.ui.model.json.JSONModel();
            oListModel.oHeaders = {
                "DataServiceVersion": "2.0",
                "MaxDataServiceVersion": "2.0"
            };
            oListModel.read("/view_VendorGroup", null, ["$filter=VendorID eq " + window.VendorID], null, function(oData, oResponse) {
                oListModelJson.setData(oData);
               // oListModelJson.loadData(oData);
    
            }, null);
    
            //oListModelJson.bindList(sPath, [oContext], [aSorters], [aFilters], [mParameters])
            //oListModelJson.attachRequestCompleted(function(oData, oEvent) {
            //
            //});
            this.byId('lstVendorGroups').setModel(oListModelJson, "VendorGroups");