Die Tabelle "Edit Offices"
Die Tabelle "Edit Offices" wurde auf einer separaten Toplevel-Seite erstellt. Wenn die Lösung ausgeführt wird, wird diese Seite über die Hauptseite aufgerufen (Abbildung links unten). Wenn Sie auf die Schaltfläche Edit Offices Table klicken, wird die Tabelle "Edit Offices" geladen (Abbildung rechts unten). Die Tabelle "Offices" hat sieben Zeilen, eine editierbare Spalte "City" und ein Steuerelement "Löschen" (siehe Abbildung rechts unten). Zusätzlich dazu befindet sich unterhalb der letzten Zeile ein Steuerelement "Zeile anhängen", eine Absenden-Schaltfläche in der Edit Offices Table-Leiste und eine Zurück-Schaltfläche, um zur vorherigen Seite (in diesem Fall der Hauptseite) zurückzugelangen.
Bei den Edit-Schaltflächen (erste Abbildung unten) wurde im Design in ihren BeiSchaltflächenklick-Ereignissen (die durch Rechtsklick auf die Schaltfläche und Auswahl von Steuerelementaktionen für BeiSchaltflächenklick angezeigt werden) die Aktion Gehe zu Seite zugewiesen. Diese Gehe zu Seite-Aktionen (zweite Abbildung unten) laden die jeweiligen Zielseiten.
Erstellung der editierbaren Tabelle "Offices"
Die Struktur der Tabelle "Offices" der DB wird in der Datenstruktur von $DB1 angezeigt (Abbildung unten). Da das Attribut @id der Primärschlüssel ist, kann es nicht geändert werden, d.h. der Endbenutzer kann bei Anhängen eines neuen Datensatzes über die Lösung keinen @id-Wert eingeben. Der @id-Wert muss automatisch mit Hilfe eines XQuery-Ausdrucks generiert werden. Der XQuery-Ausdruck wird mit dem Kontextmenübefehl Beim Laden auf Vorhandensein überprüfen (XPath-Wert) eingefügt.
let $all := $DB1/DB/RowSet/Row/@id
let $ids := remove($all, index-of($all, ""))
let $id := if (empty($ids)) then 1 else max($ids) + 1
return $id
Im Design nehmen wir die folgenden Änderungen vor:
Aufgabe | So geht's |
Alle (Office) Zeilen anzeigen | Fügen Sie eine sich wiederholende Tabelle hinzu, wobei die Zeile Office das sich wiederholende Element ist. |
Steuerelemente zum Löschen und Hinzufügen von Zeilen hinzufügen | Aktiveren Sie beim Hinzufügen der Tabelle die Option, dass Steuerelemente zum Löschen/Hinzufügen automatisch inkludiert werden |
Bearbeitung von @City-Werten aktivieren | Fügen Sie ein Steuerelement "Feld bearbeiten" hinzu, das den Quell-Node @City hat. |
Änderungen wieder in der DB speichern | Fügen Sie zum Ereignis BeiKlickAufAbsenden der Seite eine Aktion Speichern hinzu; Klicken Sie außerdem mit der rechten Maustaste auf $DB1 und schalten Sie Originalzeilengruppe erstellen ein. |
Zurück zur Hauptseite gehen | Fügen Sie zum Seitenereignis BeiKlickAufZurückSchaltfläche die Aktion Gehe zu Seite hinzu. |
Wenn Sie das Steuerelement "Tabellen" aus dem Fenster "Steuerelemente" in das Design ziehen, wird das Dialogfeld "Neue Tabelle" angezeigt (Abbildung unten). Definieren Sie, dass es sich um eine wiederholte Tabelle handelt, geben Sie die Anzahl der Spalten (4) und Zeilen (1)ein, aktivieren Sie das Kontrollkästchen Automatische Anhängen/Löschen-Steuerelemente und klicken Sie auf OK. Zu den ersten drei Zellen der Zeile werden, wie in der Abbildung unten gezeigt, Beschriftungen hinzugefügt. Für die zweite Beschriftung (DB:id) wird ein Quell-Node-Link zum Node @id von $DB1 erstellt.
|
Zur vierten Zelle wird ein Steuerelement "Feld bearbeiten" hinzugefügt und ein Quell-Node-Link zum Node @City von $DB1 wird dafür erstellt (DB:City). Wir verwenden in dieser Zelle ein Steuerelement "Feld bearbeiten", da der Endbenutzer die @City-Werte bearbeiten können muss; alle anderen Zellen haben Steuerelemente vom Typ "Beschriftung".
|
Klicken Sie auf Seite | Seitenaktionen, um das Dialogfeld "Seitenaktionen" (Abbildung unten) zu öffnen. Für die folgenden Elemente sind Aktionen definiert:
•BeiKlickAufAbsenden: Speichert alle Spalten der Seite in der DB ($DB1) und geht zurück zur Hauptseite. Sie sollten eventuell auch die Aktion "Neu laden" hinzufügen, damit die Datenbank mit den ungeänderten Daten neu geladen wird, falls der Datensatz nicht in der Datenbank gespeichert wird. (siehe Abbildung unten). •BeiKlickAufZurückSchaltfläche: Geht zurück zur Hauptseite.
Die Struktur der Seitenquelle muss auch ein OriginalRowSet-Element, welches eine Kopie des Elements RowSet ist, enthalten. Die Originaldaten werden im Element OriginalRowSet gespeichert, damit die Spalten des Elements RowSet bearbeitet werden können. Der neue Wert wird nur beim Speichern der Daten in der DB im Element OriginalRowSet aktualisiert. |