2016-06-30 25 views
1

Ich habe qx.data.Array Variable besteht aus Objekten. Wie verbinde ich Array mit einer Tabelle? Ich denke, ich brauche eine Art der Zuordnung in Code unten. Die Zeilen in der Tabelle sind leer, aber die Anzahl ist korrekt.Wie qx.data.Array über qx.ui.table.Table zu steuern

var rowData = theStore.getModel(); //it is qx.data.Array type 
var tableModel = new qx.ui.table.model.Simple(); 
tableModel.setData(rowData); 
var table = new qx.ui.table.Table(tableModel); 

Danke, Karol

Antwort

1

Aus bei Datenmodell suchen:

map array
Sie haben eine Reihe von Objekten/Karte. In diesem Fall können Sie tableModel.setDataAsMapArray(rowData) http://demo.qooxdoo.org/current/apiviewer/#qx.ui.table.model.Simple~setDataAsMapArray
statt tableModel.setData(rowData) verwenden.

Sie müssen jedoch zuerst die Spalten-IDs des Modells festlegen, damit qooxdoo die Zuordnung von den Daten zu den Spalten einrichten kann. z.B.

+0

Vielen Dank adrelino. Es löste das Problem, zusätzlich musste ich die FunktionArray() hinzufügen (var rowData = theStore.getModel(). ToArray();). Wenn ich die Zeile bearbeite und sie ändere, wird die Änderung nicht in theStore.getModel() wiedergegeben. Ist die Möglichkeit, Quellzeilen (theStore.getModel()) in der Tabelle zu haben, nicht eine Kopie davon? –

+0

Es gibt keine Datenbindung zwischen demStore <--> tableModel, Sie müssen das also manuell tun. 1. Bearbeiten Sie die Zeile mit qooxdoo Tabelle + TabelleModell? 2. oder bearbeiten Sie die Quelldaten im Store? <- Wenn Sie tableModel.getDataAsMapArray() aufrufen, sollten Sie die geänderten Daten aus der Tabelle qooxdoo abrufen. -> Und im zweiten Fall rufen Sie einfach setData (rowData) noch einmal auf, um die alten Daten zu überschreiben – adrelino

1

qx.ui.table.Table verarbeitet nativ keine Bindung, daher können Sie Ihr Modell (den Speicher) nicht an die Tabelle binden und Änderungen innerhalb der Tabelle vornehmen, die ohne manuelle Synchronisierung in den Speicher reflektiert werden.

Das Erstellen eines eigenen tableModel (Implementierung der Schnittstelle qx.ui.table.ITableModel) ist recht einfach. Sie können ein benutzerdefiniertes Tabellenmodell erstellen und Ihren Speicher an das Modell Ihres benutzerdefinierten Modells mit bidirektionaler Bindung zwischen Tabellen binden Zellen und Speichermodell.