xml просмотр данных привязки из двух наборов сущностей - PullRequest
0 голосов
/ 04 июля 2018

Я работаю над приложением Master-Detail. У меня есть представление с управлением списком, и я связываю то же самое с данными из набора сущностей, называемого "entityset1".

Odata -> data from the entityset1
<serialno>122333</serialno>

У меня есть другой набор сущностей под названием entityset2 в той же службе.

Odata -> data from the entityset2
<hdata>is Active</hdata>

Данные из вышеупомянутого entityset2 будут извлечены только с помощью фильтра (/ sap / opu / odata / sap / My_SRV / entityset2? $ Filter = (serialno = 122333)

Я сейчас пытаюсь получить значение из entityset2 и пытаюсь связать его с одним атрибутом в моем списке. Этот список уже связан с данными entityset1.

Myview.xml.

<List id="list" select="_handleSelect">
    <ObjectListItem id="MAIN_LIST_ITEM" press="_handleItemPress" title="{Name}">
        <attributes>
            <ObjectAttribute id="ATTR1" text="{serialno}" />
<ObjectAttribute id="ATTR2" text="{entityset2/hdata}" />            
        </attributes>
    </ObjectListItem>
</List>

Controller.js (привязка с использованием строк ниже)

this.oList.bindAggregation("items", {
            path: '/entityset1',
            template: this.oListItem,
            filters: this.searchFilters
        });
var oserialnum = this.getView().getBindingContext().getObject().serialno;
var oHdata = new sap.ui.model.Filter("serialno", "EQ",oserialnum);
this.searchFilters = new sap.ui.model.Filter([oserialnum],true);
                this.oList.bindAggregation("items",{    
                    path : "/entityset2",   
                    filters :this.searchFilters
                }); 

Однако я получаю сообщение об ошибке "Не удается прочитать свойство 'getObject' из неопределенного" в этой строке "this.getView (). GetBindingContext (). GetObject (). Serialno".

Может кто-нибудь любезно посоветовать, как извлечь данные из объекта2 и связать их со списком?

Ответы [ 3 ]

0 голосов
/ 16 июля 2018

Если я правильно вас понимаю, вам нужны ассоциации.

Они позволят службе OData доставлять необходимые Данные из entityset2 напрямую с entityset1 через «связывание» entityset2 с вашим серийным номером.

Если вы используете SAP Backend и SEGW, этот блог может вам помочь:

https://blogs.sap.com/2014/09/24/lets-code-associationnavigation-and-data-provider-expand-in-odata-service/

0 голосов
/ 13 сентября 2018

Я столкнулся с подобной проблемой при создании приложения Master-Detail, но обнаружил на форумах SAP , что это невозможно , что имеет смысл и в итоге создает отдельный набор сущностей в бэкэнде, имеющий ссылку на другой набор

0 голосов
/ 05 июля 2018

Вы не можете получить BindingContext, используя представление. Подробнее о связывании. Контекст - это указатель на объект в данных модели.

Кроме того, serialNo (параметр, который вы пытаетесь извлечь из модели, также является контекстным, т. Е. Отличается для каждого элемента строки).

Один из способов сделать это будет:

onListeItemPress Событие списка

<ObjectListItem ... ... press="onListItemPress" >

В соответствующем контроллере

`onListItemPress: function (oEvent) {

var oserialnum = Event.getSource (). GetBindingContext ("mainODataModel") .. getProperty ("serialNo") `

Дайте мне знать, если это поможет.

...