Container für die Eingabemaske zu einer Tabelle. Der Content dieses Elements wird nur ein einziges Mal
ausgeführt. Es gibt zwei verschiedene Verwendungsmöglichkeiten:
Entweder werden mit
sd:label
die Spaltenbeschriftungen sowie mit
sd:input-text
die Eingabefelder individuell ausgegeben und durch eigene Formatierungen, erläuternde Texte und ähnliches ergänzt.
Oder es wird das
sd:input-cell-set
-Element verwendet, um eine Kombination aus Beschriftung und Eingabefeld
zu definieren. Dieses Element wird später für jede Spalte der Tabelle einmal ausgeführt.
Das
sd:ro-value
-Element ermöglicht es, eine einzelne Zelle einer bearbeiteten Zeile mit einem festen Wert
(read-only) zu belegen, um bsp. zu erkennen, daß die letzte Bearbeitung dieses Datensatzes über diese Ausgabeseite (und
nicht über die interne Maske) erfolgt ist. Dies ermöglicht später bsp. das leichte Auffinden aller über diese Ausgabeseite
hinzugefügten neuen Datensätze. Der hier definierte Wert wird erst nach dem Verarbeiten aller Eingabeparameter der Zelle
zugewiesen und wird nicht in die Html-Version übertragen, sondern ausschließlich intern verarbeitet.
Falls das
sd:main
-Attribut mit dem Namen einer Tabelle belegt ist, kann das Eingabeformular
dazu verwendet werden, einen Haupt- sowie einen ersten Detaildatensatz zu diesem Hauptdatensatz gleichzeitig zu speichern.
In diesem Fall müssen zusätzliche
sd:input-text
-Eingabefelder definiert werden, die mit dem
sd:is-main
-Attributwert 'true' der Haupttabelle zugeordnet werden. Ferner muß die Detailtabelle
eine Spalte namens 'Haupttabelle' + 'Id' besitzen. Dann wird zunächst die Hauptzeile gespeichert, die Verweisspalte der
Detailtabelle mit der neuen Id belegt und anschließend die Detailzeile gespeichert.
Eine Sonderfunktion nimmt das
sd:cached-id
-Attribut ein. Wird ihm ein Name zugewiesen,
so wird beim Speichern dieses Datensatzes die neue Zeilen-Id unter diesem Namen mit vorgestelltem '$' im Laufzeitcache
für den aktuellen Nutzer zwischengespeichert. Anschließend kann dieser Name (mit '$') verwendet werden, um im
sd:ro-value
-Element anderer Ausgabeseiten die bereits gespeicherte Id einzutragen. Damit kann auf einer
einführenden Seite durch den Klick eines Nutzers zunächst ein Hauptdatensatz erzeugt (Bsp.:
Pizza-Bestellung) und dieser
gecacht werden. Auf den folgenden Seiten werden die Details dieser Bestellung vom Nutzer ausgewählt und die zugeordneten
Detaildatensätze mit der Haupt-Id der Bestellung gespeichert. Zum Schluß kann nochmals der Hauptdatensatz gespeichert und
mittels des
sd:ro-value
-Elements ein Flag gesetzt werden, so daß die Bestellung erfolgreich abgesandt worden
ist.
Das folgende Beispiel codiert jedes Eingabefeld einzeln und bettet die Ausgabe in eine Blindtabelle ein. Da alle
Spaltennamen hart codiert sind, wirken hier einerseits keine Url-Überschreibungen, andererseits können zusätzliche Texte,
Umbrüche oder gesonderte Formatierungen eingefügt werden:
<table>
<sd:input-table sd:name='sample-input' sd:table='Artikel'>
<tr>
<td>
<sd:label sd:col='ArtikelId' />
</td>
<td>
<sd:input-text sd:col='ArtikelId' />
</td>
</tr>
<tr>
<td>
<sd:label sd:col='A_Name' />
</td>
<td>
<sd:input-text sd:col='A_Name' />
</td>
</tr>
<tr>
<td>
<sd:label sd:col='A_Preis' />
</td>
<td>
<sd:input-text sd:col='A_Preis' />
</td>
</tr>
</sd:input-table>
</table>
Der folgende Code verwendet ebenfalls eine Blindtabelle zur Positionierung, nutzt jedoch die dynamische
Erstellung. Mit diesem Code können Url-Überschreibungen (/sample-input/table/Vertreter) genutzt werden, so daß - ohne
weitere Anpassungen - eine Eingabemaske für eine andere Tabelle zur Verfügung steht. Es wird ein sehr kompakter Code generiert:
<table>
<sd:input-table sd:name='sample-input' sd:table='Artikel'
sd:rel-format='auto'>
<sd:input-cell-set>
<sd:normal>
<tr>
<td>
<sd:label />
</td>
<td>
<sd:input-text />
</td>
</tr>
</sd:normal>
</sd:input-cell-set>
</sd:input-table>
</table>
Hier wird das sd:input-table-Element nur einmal ausgeführt. Das
sd:input-cell-set
-Element wird
jedoch für jede Spalte einmal aufgerufen. Eine Belegung mit expliziten Spaltennamen ist hier nicht notwendig. Falls zwischen
ungeraden und geraden Spalten unterschieden werden soll, kann zusätzlich ein
sd:alternate
-Element eingefügt
werden.
Kontaktformular:
Schreiben Sie mir und wir bauen gemeinsam Ihre neue Web-Datenbank!