SAPUI5 列表与 XML 视图中的过滤数据绑定
SAPUI5 List binding with filtered data in XML view
希望你一切顺利
目前我正在尝试将过滤后的数据绑定到 xml 视图中的列表控件,在控制器的 oninit 事件中,odata 服务 url 是这样的
http://mikmo.mylocalhost.com/MIKMOWCFDataService.svc/view_VendorGroup?$filter=VendorID%20eq%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>businessareas}" id="lstVendorGroups">
<items>
<!--<ObjectListItem title="{VendorGroups>GroupName}" type="Active" press=".onItemSelected" /> -->
<StandardListItem id="stListItem" />
</items>
</List>
我需要知道的是如何将attachRequestCompleted方法中的列表项与数据绑定
提前致谢
您需要绑定 sap.m.List 的聚合 'items'。
我会在您的代码中修改以下内容:
oDataModel 的读取方法:使用 oDataModel 执行读取操作后,您将获得在本地 JSON 模型中设置数据的成功处理程序。代码行:oListModelJson.loadData(oData);
不是必需的,因为前一行代码是:oListModelJson.setData(oData);
- 已经将数据设置为本地 JSON 模型。
JSON 模型的 AttachRequestCompleted:我不会使用此方法,因为它是在您将数据(通过 AJAX 调用)直接加载到 JSON 时使用的模型。但是这里因为你正在使用 oData 模型来获取,所以它不是必需的。所以我会删除处理程序。
在您的 XML 视图中,您需要告诉 sap.m.List,对象数组所在的路径。考虑到您已应用过滤器,您的 JSON 模型将包含以 'results' 关键字开头的数据。如果以下代码不起作用,请粘贴您的 JSON 模型数据:
XML中的代码:
<List growing="true" growingThreshold="100" headerText="{i18n>businessareas}" id="lstVendorGroups" items="{VendorGroups>/results}">
<items>
<!--<ObjectListItem title="{VendorGroups>GroupName}" type="Active" press=".onItemSelected" /> -->
<StandardListItem id="stListItem" />
</items>
</List>
我修改后Controller中的代码:
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");
希望你一切顺利
目前我正在尝试将过滤后的数据绑定到 xml 视图中的列表控件,在控制器的 oninit 事件中,odata 服务 url 是这样的
http://mikmo.mylocalhost.com/MIKMOWCFDataService.svc/view_VendorGroup?$filter=VendorID%20eq%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>businessareas}" id="lstVendorGroups">
<items>
<!--<ObjectListItem title="{VendorGroups>GroupName}" type="Active" press=".onItemSelected" /> -->
<StandardListItem id="stListItem" />
</items>
</List>
我需要知道的是如何将attachRequestCompleted方法中的列表项与数据绑定 提前致谢
您需要绑定 sap.m.List 的聚合 'items'。 我会在您的代码中修改以下内容:
oDataModel 的读取方法:使用 oDataModel 执行读取操作后,您将获得在本地 JSON 模型中设置数据的成功处理程序。代码行:
oListModelJson.loadData(oData);
不是必需的,因为前一行代码是:oListModelJson.setData(oData);
- 已经将数据设置为本地 JSON 模型。JSON 模型的 AttachRequestCompleted:我不会使用此方法,因为它是在您将数据(通过 AJAX 调用)直接加载到 JSON 时使用的模型。但是这里因为你正在使用 oData 模型来获取,所以它不是必需的。所以我会删除处理程序。
在您的 XML 视图中,您需要告诉 sap.m.List,对象数组所在的路径。考虑到您已应用过滤器,您的 JSON 模型将包含以 'results' 关键字开头的数据。如果以下代码不起作用,请粘贴您的 JSON 模型数据:
XML中的代码:
<List growing="true" growingThreshold="100" headerText="{i18n>businessareas}" id="lstVendorGroups" items="{VendorGroups>/results}">
<items>
<!--<ObjectListItem title="{VendorGroups>GroupName}" type="Active" press=".onItemSelected" /> -->
<StandardListItem id="stListItem" />
</items>
</List>
我修改后Controller中的代码:
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");