2016-10-21 5 views
0

Ich habe ein Problem für Wert Tabelle erhalten sapui5. Ich will, wenn ich auf updatebutton klicke, bekomme ich einen Zeilenauswahlindex und erhalte den Wert für jede Spalte.Wert von Tabelle erhalten sapui5 xml

Dies ist mein Code:

updateButton : function(evt) { 
    var oTable = this.getView().byId("tabelFaktor"); 
    var iIdx = oTable.getSelectedIndex(); 
}, 

Das ist mein XML-Code:

<Table id="tabelFaktor" 
    selectionChange="handleSelectionChange" 
    mode="MultiSelect" 
    inset="false" 
    items="{ 
    path: '/', 
    sorter: { 
    path: 'Name' 
    } 
    }"> 
    <columns> 
     <Column 
      width="12em" 
      hAlign="Center"> 
      <Text text="TMT FAKTOR" /> 
     </Column> 
     <Column 
      minScreenWidth="Tablet" 
      demandPopin="true" 
      hAlign="Center"> 
      <Text text="TAHUN MI" /> 
     </Column> 
     <Column 
      minScreenWidth="Tablet" 
      demandPopin="true" 
      hAlign="Center"> 
      <Text text="KODE KELOMPOK" /> 
     </Column> 
     <Column 
      minScreenWidth="Tablet" 
      demandPopin="true" 
      hAlign="Center"> 
      <Text text="KODE PRODUK" /> 
     </Column> 
     <Column 
      hAlign="Center"> 
      <Text text="MASA IURAN" /> 
     </Column> 
     <Column 
      hAlign="Center"> 
      <Text text="NILAI" /> 
     </Column>     
     <Column 
      hAlign="Center"> 
      <Text text="NILAI1" /> 
     </Column>     
     <Column 
      hAlign="Center"> 
      <Text text="NILAI2" /> 
     </Column> 
    </columns> 

    <items> 
     <ColumnListItem> 
      <cells> 
       <ObjectIdentifier 
        text="{tmtFaktor}"/> 
        <Text 
        text="{tahunMI}" />    
        <Text 
        text="{kodeKelompok}" /> 
        <Text 
        text="{kodeProduk}" /> 
        <Text 
        text="{masaIuran}" /> 
        <Text 
        text="{nilai}" />      
        <Text 
        text="{nilai1}" /> 
        <Text 
         text="{nilai2}" />                         
      </cells> 
     </ColumnListItem> 
    </items> 
</Table> 

Wie dieses Problem zu lösen? Danke.

Grüße, Bobby

+0

Ich sehe keine Schaltfläche (sollte es in jeder Zeile oder nur in der Tabellenüberschrift angezeigt? Außerdem haben Sie 'mode = MultiSelect 'damit Sie möglicherweise mehrere Zeilen erhalten, nicht 1, was Ihrer Anforderung widerspricht – Qualiture

Antwort

0

Unter der Annahme, dass Ihre Tabelle ein sap.m.Table ist die aktuell ausgewählte Zeile/Zelle Werte wie folgt zugreifen können:

var selectedItem = oTable.getSelectedItem(); 
var oCells = selectedItem.getCells(); 
    var keys = []; 
    var values = []; 
    for (var i = 0; i < oCells.length; i++) { 
     // key = field name in model 
     keys.push(oCells[i].getBindingPath("text")); 
     // value = field value in model 
     values.push(oCells[i].getText()); 
    } 

Ich hoffe, das hilft. Mit freundlichen Grüßen, Sebastian

+0

Lieber Sebastian, –

+0

Lieber Sebastian, Vielen Dank für Ihre Antwort. Wenn ich Ihren Code versuche, bekomme ich den letzten Spaltenwert in der ausgewählten Zeile. Wie erhält man alle Werte in jeder Spalte der ausgewählten Zeile? Vielen Dank. Grüße, Bobby –

+0

Lieber Sebastian, –

0

Ich würde nicht empfehlen Schleifen über Zellinhalte; Um MVC-Prinzipien zu folgen, sollten Sie immer die Daten aus dem Modell, nicht aus dem UI-Steuerelement abrufen.

Ihr Code wird auch viel besser lesbar am Ende:

var selectedRowdata = oTable.getSelectedContexts()[0].getObject(); 

(Anmerkung:. Ich nehme Sie nur eine Auswahl hast, wenn Sie mehrere Auswahlmöglichkeiten haben, nicht [0] verwenden, um das erste zu erhalten (dh nur eine Zeile, aber Schleife über das Array von getSelectedContexts() zurückgegeben)