Die Tabelle "Edit Sales"
Wie die Tabelle "Edit Offices" wurde die Tabelle "Edit Sales" auf einer separaten Toplevel-Seite angelegt. Wenn die Lösung ausgeführt wird, wird diese Seite über die Hauptseite aufgerufen (Abbildung links unten). Wenn Sie auf die Schaltfläche Edit Sales Table klicken, wird die Tabelle "Edit Sales" geladen (Abbildung rechts unten). Die Tabelle "Sales" hat mehrere Zeilen, von denen jede eine nicht editierbare ID-Spalte (Sales Item) sowie die editierbaren Spalten "Office", "Month", "Year" und "Licenses" und ein Steuerelement "Löschen" (siehe Abbildung rechts unten) hat. Zusätzlich dazu befindet sich unterhalb der letzten Zeile ein Steuerelement "Zeile anhängen", eine Absenden-Schaltfläche in der Edit Sales Table-Leiste und eine Zurück-Schaltfläche, um zur vorherigen Seite (in diesem Fall der Hauptseite) zurückzugelangen.
Beiden 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 "Sales"
Die Struktur der Tabelle "Sales" der DB wird in der Datenstruktur von $DB2 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 := $DB2/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 (Sales) Zeilen anzeigen | Fügen Sie eine sich wiederholende Tabelle hinzu, wobei die Zeile Sales 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 Werten aktivieren | Fügen Sie eine Auswahlliste und ein Steuerelement "Feld bearbeiten" hinzu, die Seitenquellen-Links haben. |
Ä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 $DB2 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 (5) und Zeilen (2)ein, aktivieren Sie das Kontrollkästchen Automatische Anhängen/Löschen-Steuerelemente und klicken Sie auf OK. Zu den Zellen der ersten Zeile werden Beschriftungen für Kopfzeilen hinzugefügt. Für den nicht editierbaren @id-Wert wird zur ersten Zelle der zweiten Zeile eine Beschriftung hinzugefügt. Für diese Beschriftung wird ein Quell-Node-Link zum @id Node von $DB2 erstellt (DB:id).
|
Für die Niederlassung wird eine Auswahlliste (mit einem Quell-Node-Link zu @Office) hinzugefügt und für die Zellen "Month", "Year" und "Licences" werden Bearbeitungsfelder mit Seitenquellen-Links zu den entsprechenden Nodes hinzugefügt.
|
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. |