Данные не видны в таблице SAP UI5

#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:

  1. Как упоминал Йорг, есть более простые способы сделать это, например, напрямую привязать к набору объектов после создания модели OData (вам не нужно вручную запускать oModel.read).

  2. В вашей текущей реализации,

     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);