2017-12-19 13 views
1

Lesen Sie mehrere Fragen hier zu diesem Problem, aber keine von ihnen geholfen.SAPUI5 oData Binding mehrere Erweiterungsparameter eins zu viele relationship

Ich habe die folgende Tabelle:

<Table 
      id="table" 
      width="auto" 
      items="{ 
       path: '/Master', 
       sorter: { 
        path: 'id', 
        descending: false 
       }, 
       parameters: { 
        expand: 'ToA, ToB' 
       } 
      }" 

Wie kann ich zeigen Eigenschaften von „ToA“ oder „TdB“ in meinem Tisch? Da ToA und TdB eine Eins-zu-Beziehung mit dem Meister haben, dieses nicht funktioniert (ich denke, das ist der Grund)

    <cells> 
         <Text text="{ToB/name1}"/> 
        </cells> 

während das funktioniert

    <cells> 
         <VBox items="{ToB}"> 
          <Text text="{name1}"/> 
         </VBox> 
        </cells> 

TdB eine Eigenschaft „ausgewählt“ hat, die kann sei 0 oder 1. Nur einer der Einträge zu einer ID in der Master-Tabelle kann 1 sein, also dachte ich, dass dies ein Weg ist, meine 1 zu 1 Beziehung zu bekommen. Aber ich kann nicht funktionieren, wie dies zu tun, versuchte es bereits mit der Expression

Bindung
<Text text="{= ${ToB/selected} === 1 ? ${ToB/name1} : 'No Entry'}"/> 

aber es zeigt immer „No Entry“ in meinem Tisch

edit: es Prüfzwecke

versucht
<Text text="{= ${ToB/selected} === 1 ? ${ToB/name1} : ${ToB/name1}}"/> 

aber es lässt nur die Spalte meiner Tabelle leer, so im die Bindung ist nicht korrekt

edit2 erraten: meine Frage zu klären: ich habe i t Arbeiten mit vbox, aber ich möchte 1 Eintrag pro Zeile haben, dh es gibt die Namen Peter, Paul und Mary für die spezifische ID, nur Peter hat den "ausgewählten" Wert 1, also möchte ich nur Peter in dieser Tabelle Zeile

+0

Ich löschte meine Antwort, da es nicht mit ODataModel funktioniert ... sorry. Wie auch immer, Ihr Problem ist, dass Sie versuchen, eine Ergebnismenge mit einer PropertyBinding zu verbinden, was einfach nicht möglich ist. – cschuff

+0

Ja, das habe ich herausgefunden. Ich werde versuchen, das Resultset zu durchlaufen und es zu filtern, bevor ich es binde. Danke trotzdem! – NJW

+0

Das ist wahrscheinlich der Weg zu gehen ... – cschuff

Antwort

0

Der Grund, warum text="{ToB/name1}" nicht funktioniert, ist, weil das Auflösen des Pfades ToB eine Auflistung aufgrund der "vielen" -Kardinalität zurückgibt, die für Eigenschaft Bindung nicht funktioniert. Dies bedeutet auch, dass es andererseits für Aggregation Bindung funktioniert, wie Sie bereits mit items="{ToB}" beobachten konnten.

Wenn Sie nur eine bestimmte Entität von ToB in <VBox> anzeigen möchten, können Sie in der Ansicht direkt einen Filter definieren. In Ihrem Fall, durch "selected" === 1.

<Table items="{ 
    path: '/Master', 
    parameters: { 
    expand: 'ToB' 
    } 
}"> 
    <items> 
    <ColumnListItem> 
     <VBox items="{ 
     path: 'ToB', 
     filters: [ 
      { 
      path: 'selected', 
      operator: 'EQ', 
      value1: 1 
      } 
     ] 
     }"> 
     <Text text="{name1}"/> 
     </VBox> 
     <!-- ... --> 
    </ColumnListItem> 
    </items> 
    <!-- ... --> 
</Table>