#javascript #eclipse #odata #sapui5 #netweaver
#javascript #eclipse #odata #sapui5 #netweaver
Вопрос:
Пожалуйста, найдите контроллер и просмотрите код, упомянутый ниже:
Я создал таблицу с использованием eclipse в SAP UI5, но данные не видны. В консоли нет ошибки, а на вкладке сеть все вызовы отображаются нормально как прикрепленные.
Как поступить?
Сетевой образ
Изображение консоли
Код контроллера:
sap.ui
.controller(
"alp_report.alp",
{
/**
* Called when a controller is instantiated and its View
* controls (if available) are already created. Can be used
* to modify the View before it is displayed, to bind event
* handlers and do other one-time initialization.
*
* @memberOf alp_report.alp
*/
onInit : function() {
that = this;
// debugger;
var sUrl = "proxy/http/igwd01.sap.com:8000/sap/opu/odata/sap/ZMSI_POLICY_SRV";
var path = "/poldtlsSet";
// Instantiate Model
var oModel = new sap.ui.model.odata.v2.ODataModel(sUrl,
false);
this.getView("vw1").setModel(oModel);
debugger;
oModel.read(path, {
async : true,
success : function(oData) {
debugger;
that.byId("lblCount").setText(
"Total Records(" oData.results.length
")");
var json = new sap.ui.model.json.JSONModel();
json.setData({
'modelData' : oData.results
});
that.getView().byId("oTable").setModel(oModel,
"json");
},
error : function(e) {
MessageToast.show("Failed");
}
});
},
Пожалуйста, найдите код просмотра, как показано ниже:
Просмотр кода:
<core:View id="vw1" xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc"
xmlns="sap.m" controllerName="alp_report.alp" xmlns:html="http://www.w3.org/1999/xhtml">
<Page title="ALP Report">
<content>
<Table id="oTable" items="{path:'/modelData'}">
<headerToolbar>
<Toolbar>
<Title level="H2" id="lblCount"></Title>
<SearchField id="searchField" width="auto"></SearchField>
</Toolbar>
</headerToolbar>
<columns>
<Column>
<Label design="Bold" text="Policy ID"></Label>
</Column>
<Column>
<Label design="Bold" text="Policy Number"></Label>
</Column>
<Column>
<Label design="Bold" text="Policy Begin Date"></Label>
</Column>
<Column>
<Label design="Bold" text="Journal No"></Label>
</Column>
<Column>
<Label design="Bold" text="Branch"></Label>
</Column>
<Column>
<Label design="Bold" text="Policy Status"></Label>
</Column>
</columns>
<items>
<ColumnListItem>
<cells>
<Text text="{SecpolId}"></Text>
<Text text="{PolicynrTt}"></Text>
<Text text="{PolbegDt}"></Text>
<Text text="{JournalnoId}"></Text>
<Text text="{ZzbranchCd}"></Text>
<Text text="{ZzPolicyStatusCd}"></Text>
</cells>
</ColumnListItem>
</items>
</Table>
</content>
</Page>
<ядро:Просмотр>
Комментарии:
1. Можете ли вы также показать нам код для
oTable
определения? Я предполагаю, что ваши привязки неверны. Однако есть более простые способы объявить модель и привязать записи таблицы, вы видели раздел SDK «Начало работы»?2. Привет, Йорг, я добавил код просмотра. Пожалуйста, проверьте и дайте мне знать, в чем может быть проблема
3. Можете ли вы проверить,
items="{json>/modelData}"
работает ли?4. Спасибо Йоргу за ваш ответ. Я пробовал, но это не работает. На самом деле на вкладке «Сеть» я увидел, что для / poldtlsSet entityset не выполняется внутренний вызов. Любое сообщение, пожалуйста, в чем может быть проблема.
5. Даже я пытался сделать async: false, но все равно безуспешно.
Ответ №1:
-
Как упоминал Йорг, есть более простые способы сделать это, например, напрямую привязать к набору объектов после создания модели OData (вам не нужно вручную запускать oModel.read).
-
В вашей текущей реализации,
var json = new sap.ui.model.json.JSONModel(); json.setData({ 'modelData' : oData.results }); that.getView().byId("oTable").setModel(oModel,"json");
Вы создали модель json, а затем, устанавливая ее в таблицу, использовали переменную, содержащую модель OData. Должно быть
that.getView().byId("oTable").setModel(json,"json");
Поскольку вы создаете модель после визуализации представления, вы также можете захотеть обновить привязки модели один раз json.refresh(true);