Werden das sourceSet-Modell oder dessen untergeordnete Elemente von Skripten verändert, führt dies zu einer ungültigen, nicht länger vertrauenswürdigen Formularzertifizierung. Da ein Formular jederzeit zertifiziert werden kann, sollten unbedingt Skripttechniken verwendet werden, die nicht zur Ungültigkeit von Zertifikaten führen.
Bei Verwendung von Skripten, mit denen Änderungen am sourceSet-Modell oder dessen untergeordneten Elementen vorgenommen werden, sollten Sie mit Modellklonen anstelle von Originalmodellen arbeiten. Dadurch werden ungültige Formulare bei Änderung eines Datenmodells verhindert. Bei Formularen zum Ausführen allgemeiner Aufgaben wie die Anzeige von Datenbankeinträgen ist die Änderung der Datenverbindungs-Nodes im sourceSet-Modell erforderlich.
Zum Klonen des sourceSet-Modells müssen Sie eine Methode für das Skript erstellen, mit der die im sourceSet-Modell zu ändernde Datenverbindung bestimmt wird. Stellen Sie zudem sicher, dass das Skript ausschließlich den Klon anstelle der Originaldefinition verwendet.
Nachfolgend wird ein Skript einer Daten-Dropdown-Liste angezeigt. Das Skript füllt die Liste mit Daten einer Datenquelle.
...
var oDB = xfa.sourceSet.nodes.item(nIndex);
...
// Search node with the class name "command"
var nDBIndex = 0;
while(oDB.nodes.item(nDBIndex).className != "command")
nDBIndex++;
oDB.nodes.item(nDBIndex).query.recordSet.setAttribute("stayBOF", "bofAction");
oDB.nodes.item(nDBIndex).query.recordSet.setAttribute("stayEOF", "eofAction");
Zum Klonen des sourceSet-Modells müssen Sie die Zeile zum Zugriff auf das Modell durch Anfügen der clone (1)-Methode am Ende der Anweisung entsprechend ändern:
var oDB = xfa.sourceSet.nodes.item(nIndex).clone(1);
Hinweis: Sie können die geklonte Datenverbindungs-Node in einer Variablen oder in einem variablendefinierten Skriptobjekt speichern.