XdevTable |
Anfang Zurück Vor |
Letzte Änderung 13.02.2014
Die Komponente XdevTable ist eine leistungsfähige Tabellen-Komponente, mit der sich Datensätze ausgeben, sortieren, selektieren und editieren lassen. Nach dem Einfügen einer XdevTable im GUI-Builder wird die Komponente zunächst nur als Dummy dargestellt, da noch keine Informationen über die Tabellenstruktur vorliegen, u.a. Anzahl, Breite, Beschriftung und Datentyp der einzelnen Spalten. Erst mit Zuweisung einer Virtuellen Tabelle werden diese Informationen an die XdevTable übergeben und die Tabelle wird im GUI-Builder entsprechend angezeigt.
Gefüllt wird eine XdevTable i.d.R. mit den Daten einer Virtuellen Tabelle, die der XdevTable mit der Methode setModel( ) zugewiesen wird, z.B. table.setModel(Fahrzeuge.VT). Die Beschriftung der Spalten wird standardmäßig von den Datenfeldern der Virtuellen Tabelle übernommen. Die für Endanwender oft nur schwer nachvollziehbaren Datenfeld-Bezeichnungen lassen sich im VT-Editor durch individuelle Beschriftungen oder im Falle einer mehrsprachigen Oberfläche durch Variablen ersetzen.
Beim Füllen einer XdevTable werden keine Datensätze zwischen Virtueller Tabelle und XdevTable übertragen. Die Komponente XdevTable besitzt keinen eigenen Datenspeicher. XdevTable und Virtuelle Tabelle werden lediglich miteinander verknüpft. Die Virtuelle Tabelle wird dadurch zum Datenspeicher (Datenschicht bzw. Datenmodel) für die bis dahin noch unvollständige und deshalb noch nicht funktionsfähige XdevTable (MVC-Konzept - Model-View-Control). Die von einer XdevTable angezeigten Daten sind somit immer die Daten einer Virtuellen Tabelle.
Die Komponente XdevTable kann jedoch weit aus mehr als nur Daten anzeigen. Die interne Steuerungseinheit (Controller) bietet bereits einen respektablen Umfang an Standardfunktionen, u.a. ●Reihenfolge der Zeilen auf- und absteigend sortierbar. ●Spaltenbreite per drag&drop individuell einstellbar. ●Reihenfolge der Spalten per drag&drop vertauschbar. ●Zeilen selektierbar. Auch Mehrfachauswahl ist möglich. ●Daten editierbar. Dabei werden je nach Datentyp automatisch entsprechend geeignete Editoren angezeigt, z.B. ein einfaches Texteingabefeld für Strings, eine ComboBox für Foreign-Keys (Integer) oder ein Datepicker für Date und Timestamps.
Wenn sich Daten in der Virtuellen Tabelle ändern, z.B. durch Hinzufügen oder Löschen von Zeilen, dann wird diese Änderung automatisch in der XdevTable auf dem Bildschirm angezeigt. Entsprechende Aktualisierungen (Refresh) laufen bei der XdevTable vollautomatisch im Hintergrund ab, sodass Sie sich darum nicht kümmern müssen.
Die Verbindung zwischen einer XdevTable und einer Virtuellen Tabelle wird nur dann aufgelöst, wenn die Table mit einer anderen Virtuellen Tabelle gefüllt wird, wodurch die XdevTable ein neues Model erhält.
●Nach Erstzulassungsdatum sortierte Tabelle Die Steuerungseinheit der Table-Komponente ermöglicht u.a. auf- und absteigendes Sortieren der Daten.
●Nach Marke sortierte Tabelle Die Sortierung der Datensätze erfolgt nur in der Table, nicht in der Virtuellen Tabelle.
Mit Hilfe der Eigenschaft Lazy Loading lässt sich für die XdevTable Lazy-Loading aktivieren.
Die XdevTable verwendet standardmäßig die Datenfeld-Namen der Virtuellen Tabelle als Spaltennamen. Entwickler vergeben ihren Datenfeldern jedoch meist fachbezogene, technische Bezeichnungen wie MODELL_ID oder für Außenstehende kaum mehr nachvollziehbare, intern verwendete Abkürzungen wie LstEkPr für Listeneinkaufspreis, sodass die Datenfeldnamen als Spaltennamen meist ungeeignet sind. Im Virtuellen Tabellen Editor können Sie deshalb für jede Tabellenspalte bei Beschriftung eine passende Beschriftung festlegen. Für mehrsprachige Oberflächen können Sie hier auch Textvariablen angeben, z.B. {$model}, sodass die Beschriftungen aus einer Sprachdatei ausgelesen werden. Bei Format können Sie zudem einzelne Datenfelder ausblenden, was i.d.R. bei der Datensatz-ID notwendig ist und darüber hinaus Formatierungen festlegen, z.B. Währungszeichen, Datum etc.
Die XdevTable lässt auch das Editieren von Daten zu. Wählen Sie dazu XdevTable > Eigenschaften > Editierbar an. Nach Abschluss der Eingabe mit Enter erfolgt automatisch eine Eingabeprüfung, die an Hand des Datentyps nur plausible Eingaben zulässt. Unpassende Eingaben werden dagegen automatisch verworfen. Anders als bei einem Formular lassen sich mit einer editierbaren XdevTable beliebig viele Datensätze in beliebiger Reihenfolge ändern und sämtliche Änderungen auf einmal abspeichern. Dafür bietet die Virtuelle Tabelle die Methode synchronizeChangedRows( ). Damit werden alle Änderungen, die in der Virtuellen Tabelle vorgenommen wurden, in der dazugehörigen Datenbanktabelle gespeichert. Zwischenzeitliche Änderungen in der Datenbanktabelle werden jedoch nicht berücksichtigt. D.h., die Synchronisierung erfolgt nur in Richtung Virtuelle Tabelle > Datenbanktabelle. Da bei dieser Methode der Datenänderung viele Datensätze betroffen sein können, erfolgt die Speicherung der Daten automatisch als Transaktion.
Um eine Synchronisierung der Daten auch in Richtung Datenbanktabelle > Virtuelle Tabelle zu erreichen, müssen Sie die XdevTable mit Hilfe der XdevTable-Methode setModel( ) aktualisieren.
Für das Auslesen der selektierten Zeile bietet Ihnen die XdevTable die Methode getSelectedVirtualTableRow( ).
Als Ergebnis erhalten Sie alle Werte dieser Zeile als VirtualRableRow, z.B. [8, BMW, 3, M3, 420, 2009-08-21, 0, 7, Coupe, 1, Neuwagen, 1, Benzin, 3, Schaltgetriebe, 3, schwarz, 66000.0].
Mit der Methode get( ) und der Angabe der Spalte können Sie anschließend gezielt Werte aus der VirtualTableRow auslesen. Die Spalte kann dabei wahlweise als Index (Reihenfolge der Spalte in der Virtuellen Tabelle, beginnend mit 0), als String oder als VT-Datenfeld-Konstante angegeben werden, wobei die Angabe als VT-Konstante empfehlenswert ist.
Mit der Methode print( ) können Sie eine XdevTable ausdrucken. Wie bei einem Screenshot wird das gesamte Aussehen der Tabelle inklusive Kopfzeile, Linien und individuellen Einfärbungen von der XdevTable übernommen. Da die Daten der View verwendet werden, wird auch die aktuelle Sortierung sowie eine vorausgehende Filterung übernommen. Die Tabelle wird für den Druck automatisch so skaliert, dass alle Spalten auf die Seite passen. Je mehr Spalten die XdevTable besitzt, desto kleiner wird dadurch die Schriftgröße. Anders als bei einem Screenshot werden nicht nur die sichtbaren, sondern tatsächlich alle Zeilen der XdevTable übernommen. Anders als bei den Spalten wird nicht versucht, alle Zeilen auf 1 Seite unter zu bringen. Sobald das Seitenende erreicht ist, erfolgt automatisch ein Seitenumbruch. Auch das Festlegen sämtlicher Druckeinstellungen ist möglich. Dazu erscheint automatisch das Standardfenster für die Druckeinstellungen. Der print( ) Aufruf muss in einem Try-Catch Block stehen.
Legt das Model, d.h. die angezeigten Spalten und Datensätze für die Tabelle fest.
Wichtigste Überladungen: ●setModel(VirtualTable vt) ●vt - Die Virtuelle Tabelle, welche als Model für diese XdevTable genutzt werden soll. Es werden alle in der VT vorgenommenen Einstellungen für die Anzeige berücksichtigt, z.B. Sichtbare Spalten oder Währungsformatierungenetc.
Keine statische VT als Model festlegen:
Die Dokumentation zu der in diesem Beispiel genutzten Methode XDEV.Query() können Sie hier einsehen.
●setModel(VirtualTable vt, String columns, boolean queryData) ●vt - Die Virtuelle Tabelle, welche als Model für diese XdevTable genutzt werden soll. ●columns - Mit columns geben Sie Tabellenspalten an, welche in der XdevTable angezeigt werden sollen. Diese werden mit Kommas getrennt und als eine Zeichenkette übergeben. ●queryData: Legt fest, ob ein Datenbank-Query auf der Datenbank ausgeführt werden soll. Steht z.B. queryData auf false und wurde die VT im Vorhinein noch nicht befüllt, so ist das Model leer und es werden nur die Spaltenüberschriften ohne Datensätze angezeigt.
●setModel(VirtualTable vt, String columns, SELECT select, Object... params) ●vt - Die Virtuelle Tabelle, welche als Model für diese XdevTable genutzt werden soll. ●columns - Mit columns geben Sie Tabellenspalten an, welche in der XdevTable angezeigt werden sollen. Diese werden mit Kommas getrennt und als eine Zeichenkette übergeben. ●select: Das SELECT-Objekt, durch welches die Tabelle gefiltert werden soll. ●params: Etwaige Parameter, welche für das SELECT-Objekt benötigt werden. Kann null sein.
Ohne Parameter ist dies ebenfalls möglich:
●setModel(TableModel model) ●model: Das TableModel, das als Model für die XdevTable definiert werden soll.
Diese Methodenüberladung ist für erfahrene Java-Nutzer gedacht und setzt fortgeschrittenes Java-Wissen voraus. Die Dokumentation zu dieser Methode mit einer Anleitung zur Erstellung eines benutzerdefinierten TableModels finden Sie hier.
Gibt die Zeile der Virtuellen Tabelle zurück, welche gerade in der XdevTable selektiert ist. Diese Methode wird benötigt, um z.B. das Locking programmatisch zu implementieren, ein Formular zu befüllen oder Datensätze zu löschen. ●Rückgabewert - Die in der Tabelle ausgewählte Zeile der verknüpften Virtuellen Tabelle.
Gibt die verbundene Virtuelle Tabelle zurück, welche als TableModel für die Tabelle dient. ●Rückgabewert - Die Virtuelle Tabelle als VirtualTable-Objekt, welche als TableModel für die XdevTable festgelegt ist.
|