2015-12-09 2 views
0

Я пытаюсь сделать привязку odata на tableselectdialog. По некоторым причинам мне сложно сделать фрагмент с использованием SAP WEB IDE, поэтому я не использовал фрагменты для диалога и просто сделал диалог на контроллере. Предполагая, что большинство свойств таблицы можно увидеть на tableelectdialog, я ожидал, что у меня не возникнут какие-либо ошибки. Я смог связать свою одату на столе. Но когда я реализовал tableelectdialog, привязка данных не работает. Может ли кто-нибудь помочь мне решить эту ошибку. Ниже мой код.OData Binding в TableSelectDialog SAPUI5

Комбинированный вызов вызывает событие с помощью метода handleAddressType. OData я использую/сок/ОП/OData/srmnxp/UTIL

handleAddressType: function(oEvent) { 
    alert(oEvent.oSource.getSelectedKey()); 
    var selectedAddressKey = oEvent.oSource.getSelectedKey(); 
    var otableSelectDialog = new sap.m.TableSelectDialog("tableSelectD", { 
     noDataText: "No Address Found", 
     title: "Select Address", 
     columns: [ 
      new sap.m.Column({ 
       header: new sap.m.Label({ 
        text: "AddressNo" 
       }) 
      }), 
      new sap.m.Column({ 
       header: new sap.m.Label({ 
        text: "Name" 
       }) 
      }), 
      new sap.m.Column({ 
       header: new sap.m.Label({ 
        text: "City" 
       }) 
      }), 
      new sap.m.Column({ 
       header: new sap.m.Label({ 
        text: "Country" 
       }) 
      }) 
     ], 
     items: { 
      path: "/", 
      template: new sap.m.ColumnListItem({ 
       cells: [ 
        new sap.m.Text({ 
         text: "{UTIL>AddressNo}" 
        }), 
        new sap.m.Text({ 
         text: "{UTIL>Name}" 
        }), 
        new sap.m.Text({ 
         text: "{UTIL>City}" 
        }), 
        new sap.m.Text({ 
         text: "{UTIL>Country}" 
        }) 
       ] 
      }) 
     } 
    }); 
    otableSelectDialog.bindAggregation("items", "UTIL>/ShipToAddressCollection?$filter=Addrtype%20eq%20%27" + selectedAddressKey + "%27", 
     new sap.m.ColumnListItem({ 
      cells: [ 
       new sap.m.Text({ 
        text: "{UTIL>AddressNo}" 
       }), 
       new sap.m.Text({ 
        text: "{UTIL>Name}" 
       }), 
       new sap.m.Text({ 
        text: "{UTIL>City}" 
       }), 
       new sap.m.Text({ 
        text: "{UTIL>Country}" 
       }) 
      ] 
     })); 
    otableSelectDialog.open(); 
} 

Спасибо заранее

ответ

0

Где названа модель "UTIL" установлена? Это на виду, Компонент, на элементе управления? Он установлен через manifest.json или вручную? Если вручную, пожалуйста, показать, как именно ...

Кроме того, ваш обязательный путь выглядит немного странно:

path : "/", 

Что EntitySet является «/» должно быть? Кроме того, вы используете именованную модель «UTIL» в остальной части кода, которая также отсутствует в пути привязки. Таким образом, я предполагаю, что обязательный путь должен выглядеть примерно так в вашем случае:

path : "UTIL>/MyEntitySet", 

Конечно, вы должны заменить «/ MyEntitySet» с тем, что подходит в вашем случае. Это работает только в том случае, если служба «sap/opu/odata/srmnxp/UTIL» является именованной моделью «UTIL». Однако эта модель «UTIL» не имеет ничего общего с «UTIL» в строке URL «sap/opu/odata/srmnxp/UTIL».

+0

My Util Odata установлен в component.js. Я предполагаю, что, поскольку я буду связывать путь viw bindAggregation, не имеет значения, что я наложу на путь, поскольку он все равно будет заменен. – melai

+0

На самом деле это на configuration.js { название: "UTIL", masterCollection: "ShipToAddressCollection", serviceUrl:. URI ("/ сок/ОПУ/OData/srmnxp/UTIL /") каталог(), isDefault: false, mockedDataSource: "/srm.shoppingcart.create/model/metadata.xml" }, – melai

+0

@melai Вы можете связать несколько моделей одновременно, поэтому вы их назовете (UTIL в этом случае). Если вы указали имя, вы должны использовать его. В противном случае структура будет искать модель без имени (глобальная модель). – Marc