InfoPath – Inhalte mit Code via Ansichtswechsel nach dem Speichern eines Formulars schützen

Ein Problem aus der Praxis begegnete mir neulich. Wenn ein Formular erstellt – sprich ausgefüllt – wird, so soll nach dem Speichern nicht mehr die Ansicht (Ansicht 1 als Standard), die für das Ausfüllen erstellt wurde, angezeigt werden, sondern eine zweite (Ansicht 2), in der die Inhalte schreibgeschützt dargestellt werden. Dies wird benötigt, um das Verändern der Inhalte nach dem Speichern zu vermeiden. Um dies umzusetzen, wird ein Kontrollkästchen verwendet, welches für das Umschalten und die Anzeige der Ansicht nach dem Speichern sorgt.

Zunächst wird ein entsprechendes Formular erstellt.

clip_image001

Das Formular wird vom Benutzer geöffnet und ausgefüllt. Das Umschalten zur zweiten Ansicht wird in diesem Beispiel dadurch ausgelöst, dass das Kontrollkästchen „Kontrolle“ aktiviert worden ist. Anschließend wird das Formular gespeichert.

Nach dem Speichern ist das Formular als XML-Datei abgelegt. Sofern diese Datei danach geöffnet wird, ist nicht wie üblich das gleiche Formular wie für die Eingabe der Daten sichtbar, sondern ein anderes, welches schreibgeschützt ist, dafür sorgt die Ansicht 2. Diese sieht in diesem Beispiel, wie auch in der Praxis, absichtlich anders aus, um die Funktionalität deutlich zu machen.

clip_image002

Nachfolgend werden die einzelnen Schritte erläutert.

Zunächst werden auf beliebige Weise zwei Ansichten erstellt. Diese heißen im vorliegenden Beispiel Ansicht 1 (Standard) und Ansicht 2 (hier sind die Daten geschützt).

Über die Registerkarte Seitenentwurf -> Eigenschaften -> Register Allgemein ist die Ansicht 2 mit aktivierter Option Schreibgeschützt versehen, damit die Inhalte nach dem Speichervorgang nur noch gelesen werden können.

clip_image003

Jetzt wird der Code über die Registerkarte Entwicklertools -> On Load-Ereignis an die entsprechende Stelle eingefügt.

Hinweis: Um den Code-Editor starten zu können und den Code eingeben zu können, wird Visual Studio benötigt.

clip_image004

Der Code wird an der gekennzeichneten Position eingefügt.

clip_image006

Hier ist der Code zum Kopieren:

//Create an XPathNavigator object for the main DOM

XPathNavigator xnDocument = this.MainDataSource.CreateNavigator();

//Create an XPathNavigator object for field1 - the check box for switching the View

XPathNavigator xnDefaultView = xnDocument.SelectSingleNode("/my:myFields/my:Kontrolle", this.NamespaceManager);

//Make sure that the XPathNavigator object is not null or an empty string

if ((xnDefaultView != null) && (xnDefaultView.Value != ""))

{

//Switch to the appropriate View

switch (xnDefaultView.Value)

{

case "false":

e.SetDefaultView("Ansicht 1");

break;

case "true":

e.SetDefaultView("Ansicht 2");

break;

}

}

Hinweis: Sollten Sie andere Bezeichnungen für Ihre Steuerelemente und Ansichten verwenden, ist dies hier im Quellcode entsprechend anzupassen, genauso wie weiter oben die Bezeichnung des Steuerelements Kontrollkästchen „Kontrolle“, um für die richtige Interpretation des Codes zu sorgen.

clip_image008

Nach dem Speichern kann das Formular benutzt werden. Sobald das Formular gespeichert worden ist (Kontrollkästchen wurde im Formular aktiviert), wird eine XML-Datei gespeichert. Wird diese geöffnet, sieht man nun das Resultat, es wird nur noch die Ansicht 2 geöffnet, die Felder sind zudem aufgrund des zuvor eingestellten Attributs „Schreibgeschützt“ nicht änderbar.

clip_image002[1]

Fertig. Viel Spaß damit.

Kommentare sind geschlossen