Mit dem RepeaterControl können wiederkehrende Strukturen und Elemente erzeugt werden. Dabei ist es ausreichend eine Vorlage in Form einer Zeile zu gestalten. Diese Zeile kann in bestimmter Anzahl wiederholt werden, wobei der Formularentwickler eine feste Anzahl vorgeben, aber auch den Ausfüller die Anzahl der Zeilen bestimmen lassen kann.
Mit dem RepeaterControl können bequem einfache Berechnungen erstellt werden. Für das Erstellen der Summe über alle Controls im Repeater wurde eine Funktion im Funktionseditor hinterlegt. Dabei ist zu beachten, dass das AusgabeControl außerhalb des RepeaterControls liegen muss. Die Anleitung stellen wir Ihnen in dem Artikel "Formularbasierte Berechnungen: Dynamische Datenauswertung in Echtzeit" bereit.
Eine einfache Anwendung für das RepeaterControl sind Tabellen. Repeater sind ab Version 5.4 auch für Webformulare verfügbar.
Ein RepeaterControl kann ein oder mehrere Eingabefelder enthalten und als Zeile darstellen, die als Vorlage für weitere Zeilen dient, falls ein Formularnutzer weitere Zeilen hinzufügt. Auf die Ausgabe der zur Laufzeit des Formulars hinzugefügten Felder in der FormServer-Datentabelle (View) wird aus technischen Gründen verzichtet. Stattdessen werden die Repeaterfelder per Datenbankverbindung in Excel ausgewertet. In dem Formupedia-Beitrag "Daten aus Repeater-Feldern in Excel auswerten" ist die Vorgehensweise Schritt für Schritt beschrieben.
Eigenschaft | Beschreibung |
---|---|
Schaltflächen | |
ShowAdd | Angabe, ob der Button für das Hinzufügen einer Zeile angezeigt werden soll. Die hinzugefügte Zeile erscheint am Ende. Angabe: True (Ja) oder False (Nein) |
ShowRemove | Angabe, ob der Button für das Entfernen einer Zeile angezeigt werden soll. Es wird immer die letzte Zeile entfernt. Angabe: True (Ja) oder False (Nein) |
ShowRowRemove | Angabe, ob der Button für das Entfernen einer Zeile in jeder Zeile angezeigt werden soll. Jede Zeile kann separat entfernt werden. Angabe: True (Ja) oder False (Nein) |
Wiederholung | |
Anzahl | Angabe der sichtbaren Zeilen |
Autosize | Angabe, ob das Control während des Hinzufügens neuer Zeilen wachsen soll oder ob die Größe des Controls erhalten bleiben soll (mit Scrollbar) Angabe: True (Ja) oder False (Nein) |
Maximum | Angabe der maximalen Anzahl von Zeilen |
Minimum | Angabe der minimalen Anzahl von Zeilen |
StartIndex | Angabe des Namenssuffix für Controls innerhalb des Repeaters. Der Start kann manuell festgelegt werden, der Index wird anschließend inkrementiert. |
Zeilenabstand | Angabe eines festen Zeilenabstandes |
Entwurf | |
AlternateColor | Alternierende Hintergrundfarbe für Repeaterzeile, wenn kein Hintergrundbild verwendet wird |
BackImage | Hintergrundbild für das Element |
prefix | Prefix für die interne Bezeichnung der Controls |
RowBackImage | Hintergrundbild für einzelne Wiederholung |
Für Repeater stehen spezielle Funktionen bereit, die im Funktionseditor im WENN- bzw. DANN-/SONST-Bereich bereitstehen. "Zeile hinzugefügt" und "Zeile entfernt" sind Repeater-Ereignisse, auf die ein Formular reagieren kann. Als Handlungsanweiungen bringt das Repeater-Control die Optionen "Neue Zeile hinzufügen", "Eine bestimmte Zeile entfernen", "Eine Zeile am Ende entfernen" und "Summe bilden" mit. Im Artikel "Formularbasierte Berechnungen: Dynamische Datenauswertung in Echtzeit" sind weitere Möglichkeiten beschrieben.
Die Mitarbeiter eines Unternehmens sollen in einem Formular auflisten können, welche Kosten ihnen bei einer Reise entstanden sind.
Definition eines RepeaterControls im FormDesigner
Dazu wird im FormDesigner ein RepeaterControl (rp_1)
erstellt. In diesem werden eine ComboBox (rp_1cb_1
; im Beispiel befüllt aus einer Globalen Variable) und zwei TextBoxen (rp_1txt_1
und rp_1txt_2
) platziert. Die drei Boxen bilden zusammen eine Tabellenzeile. Die Spaltennamen sind durch Label dargestellt.
Beispiel für die Anwendung eines RepeaterControls
Wenn der Anwender das Formular öffnet, sieht er zunächst nur eine Tabellenzeile und kann diese durch eine Auswahl in der ComboBox und durch Eintragungen in die Textboxen befüllen.
Benötigt er weitere Zeilen, fügt er sie über das Pluszeichen hinzu. Zum Entfernen einer Zeile kann er das Minuszeichen verwenden, siehe nebenstehende Abbildung.
Controls, die innerhalb eines RepeaterControls platziert werden, haben also die besondere Eigenschaft, dass sie bei der Eingabe im Formular durch den Anwender bei Bedarf vervielfältigt werden können. Bei nachträglicher Veränderung des Formularentwurfs im FormDesigner ist daher Folgendes zu beachten: Wird ein bestehendes Control in ein RepeaterControl verschoben, erhält es eine neue ID. Zuvor bestehende Zuordnungen, etwa zwischen einem AttachmentControl und den darin bereits in Datensätzen gespeicherten Datei-Anhängen werden aufgehoben. Alle erhobenen Daten bleiben dabei erhalten.
Es kann notwendig sein, dass bestimmte Werte des Repeater-Controls ausgelesen werden müssen.
Dafür gibt es ein paar hilfreiche Funktionen:
Annahme: Es existiert ein Repeater-Control [@rp_Test]
, mit einer TextBox [@txt_Test]
und einer ComboBox [@cb_Test]
.
**[@txt_Test]**
einer Zeile n?[@rp_Testtxt_Test_**n**]
**[@txt_Test]**
der letzten Zeile?Schritt 1: Auslesen, welche Zeile die letzte ist.
Der Variable [$LetzteZeile]
wird der Wert *[![@rp_Test]-1:0]*
zugewiesen.
Schritt 2: Wert übergeben und gewünschtes Feld auslesen
[@rp_Testtxt_Test_[$LetzteZeile]]