Zugreifen auf Formulardaten

Wenn Sie die Funktionalität eines InfoPath-Formulars erweitern möchten, ist es häufig notwendig, programmgesteuert auf Informationen zu dem dem Formular zugrunde liegenden XML-Dokument zuzugreifen, auf die Daten zuzugreifen, die das XML-Dokument enthält, oder Aktionen im XML-Dokument auszuführen. Das InfoPath-Objektmodell unterstützt den Zugriff auf und das Bearbeiten des einem Formular zugrunde liegenden XML-Dokuments durch die Verwendung der XmlForm-Klasse in Verbindung mit der XmlFormCollection-Klasse .

Die XmlForm-Klasse ist einer der nützlichsten Typen im InfoPath-Objektmodell, da sie eine Vielzahl von Eigenschaften und Methoden bereitstellt, die nicht nur mit dem einem Formular zugrunde liegenden XML-Dokument interagieren, sondern auch viele der Aktionen ausführen, die auf der InfoPath-Benutzeroberfläche verfügbar sind.

Übersicht über die XmlFormCollection-Klasse

Die XmlFormCollection-Klasse stellt die folgenden Methoden und Eigenschaften bereit, mit denen Formularentwickler die xmlForm-Objekte verwalten können, die die Auflistung enthält.

Name Beschreibung
New(String)- Methode
Erstellt basierend auf dem angegebenen Formular ein neues Formular.
New(String, XmlFormOpenMode) -Methode (Überladung 1)
Erstellt basierend auf dem angegebenen Formular ein neues Formular mithilfe des angegebenen Öffnungsmodusverhaltens.
NewFromFormTemplate(String)- Methode
Erstellt basierend auf der angegebenen Formularvorlage ein neues Formular.
NewFromFormTemplate(String, String) -Methode (Überladung 1)
Erstellt basierend auf der angegebenen Formularvorlage und XML-Daten ein neues Formular.
NewFromFormTemplate(String, String, XmlFormOpenMode) -Methode (Überladung 2)
Erstellt ein neues Formular basierend auf der angegebenen Formularvorlage mit Daten, die von einem XPathNavigator-Objekt angegeben werden.
NewFromFormTemplate(String, XPathNavigator)- Methode (Überladung 3)
Erstellt ein neues Formular auf Grundlage der angegebenen Formularvorlage mit durch ein XPathNavigator-Objekt angegebenen Daten mithilfe des angegebenen Öffnungsmodusverhaltens.
Open(String)- Methode
Öffnet das angegebene Formular.
Open(String, XmlFormOpenMode) -Methode (Überladung 1)
Öffnet das angegebene Formular mithilfe des angegebenen Öffnungsmodusverhaltens.
Count-Eigenschaft
Ruft die Anzahl der XmlForm-Objekte ab, die in der Auflistung enthalten sind.
Item-Eigenschaft
Ruft einen Verweis auf das angegebene XmlForm-Objekt aus der Auflistung nach Indexwert ab.

Übersicht über die XmlForm-Klasse

Die XmlForm-Klasse stellt die folgenden Methoden und Eigenschaften bereit, mit denen Formularentwickler mit dem einem Formular zugrunde liegenden XML-Dokument interagieren und Aktionen ausführen können.

Name Beschreibung
Close-Methode
Schließt das Formular.
GetWorkflowTasks-Methode
Ruft einen Verweis auf die Microsoft.Office.Core.WorkflowTasks-Auflistung des aktuellen Formulars ab.
GetWorkflowTemplates-Methode
Ruft einen Verweis auf die Microsoft.Office.Core.WorkflowTemplates-Auflistung des aktuellen Formulars ab.
MergeForm(String)- Methode
Führt das aktuelle Formular mit dem über den Pfad oder URL angegebenen Formular zusammen.
MergeForm(XPathNavigator)- Methode (Überladung 1)
Führt das aktuelle Formular mit dem im Knoten angegebenen Zielformular zusammen. Dies ist der von XPathNavigator, der an die Methode übergeben wurde, zurückgegebene Knoten.
NotifyHost-Methode
Stellt einen benutzerdefinierten Wert für die Hostanwendung oder ASPX-Seite (Active Server Page Extension) bereit.
Print() -Methode
Druckt den Formularinhalt so, wie er in der aktiven Ansicht des Formulars gerendert wird.
Print(Boolean)- Methode (Überladung 1)
Druckt den Formularinhalt so, wie er in der aktiven Ansicht des Formulars gerendert wird, indem das Dialogfeld Drucken angezeigt wird.
Save-Methode
Speichert das Formular unter dem ihr zurzeit zugeordneten URL (Uniform Resource Locator).
SaveAs-Methode
Speichert das Formular unter dem angegebenen URL (Uniform Resource Locator).
SetSaveAsDialogFilename-Methode
Legt den Standarddateinamen für das Dialogfeld Speichern unter fest.
SetSaveAsDialogLocation-Methode
Legt den Standardpfad zum Speichern des Formulars mithilfe des Dialogfeldes Speichern unter fest.
Submit-Methode
Sendet das Formular mithilfe des in der Formularvorlage definierten Sendevorgangs.
CurrentView-Eigenschaft
Ruft ein View-Objekt ab, das die aktuelle Ansicht des Formulars darstellt.
DataConnections-Eigenschaft
Ruft ein DataConnectionCollection-Objekt ab, das dem Formular zugeordnet ist.
DataSources-Eigenschaft
Ruft das DataSourceCollection-Objekt ab, das dem Formular zugeordnet ist.
Dirty-Eigenschaft
Ruft einen Wert ab, der angibt, ob die Daten in einem Formular seit dem letzten Speichern geändert wurden.
Errors-Eigenschaft
Ruft einen Verweis auf die FormErrorCollection ab, die einem Formular zugeordnet ist.
Erweiterungseigenschaft
Ruft ein System.Object-Objekt für den Zugriff auf die Funktionen und globalen Variablen ab, die in der primären Formularcodedatei eines Formulars mithilfe von System.Reflection enthalten sind.
FormState-Eigenschaft
Ruft einen Verweis auf eine Eigenschaftensammlung vom Typ System.Collections.IDictionary ab, der von browserfähigen Formularen zum Beibehalten von Statusinformationen in allen Sitzungen auf dem Server verwendet werden kann.
Host-Eigenschaft
Ruft System.Object ab, mit Zugriffsmöglichkeit auf das Objektmodell der Hostanwendung mittels Code, das in einer gehosteten Instanz von InfoPath ausgeführt wird.
Hosted-Eigenschaft
Ruft ab, ob InfoPath in einer anderen Anwendung als Steuerelement gehostet wird.
HostName-Eigenschaft
Ruft den Namen der Anwendung ab, mit der InfoPath als Steuerelement gehostet wird.
MainDataSource-Eigenschaft
Ruft ein DataSource-Objekt ab, das die Standard Datenquelle des Formulars darstellt.
NamespaceManager-Eigenschaft
Ruft einen Verweis auf ein XmlNamespaceManager-Objekt ab, das zum Auflösen, Hinzufügen oder Entfernen von Namespaces verwendet werden kann, die im Formular verwendet werden.
Neue Eigenschaft
Ruft einen Wert ab, der angibt, ob ein Formular neu ist.
Berechtigungseigenschaft
Ruft einen Verweis auf ein Permission-Objekt ab, das dem Formular zugeordnet ist.
QueryDataConnection-Eigenschaft
Ruft einen Verweis auf das DataConnection-Objekt ab, das die Datenverbindung darstellt, die dem Formular zugeordnet ist.
ReadOnly-Eigenschaft
Ruft einen Wert ab, der angibt, ob eine Formularvorlage schreibgeschützt oder gesperrt ist.
Wiederhergestellte Eigenschaft
Ruft einen Wert ab, der angibt, ob ein Formular zuletzt mithilfe eines AutoWiederherstellen-Speichervorgangs gespeichert wurde.
Signierte Eigenschaft
Ruft einen Wert ab, der angibt, ob ein Formular mithilfe digitaler Signaturen digital signiert wurde.
SignedDataBlocks-Eigenschaft
Ruft einen Verweis auf die SignedDataBlockCollection-Auflistung ab, die einem Formular zugeordnet ist.
TaskPanes-Eigenschaft
Ruft einen Verweis auf die TaskPaneCollection ab, die einer Formularvorlage zugeordnet ist.
Vorlageneigenschaft
Ruft einen Verweis auf das FormTemplate-Objekt ab, das das Manifest (.xsf) der dem Formular zugeordneten Formularvorlage darstellt.
Uri-Eigenschaft
Ruft den URI (Uniform Resource Identifier) eines Formulars ab.
UserRole-Eigenschaft
Ruft den aktuellen Benutzer des Rollennamens im Formular ab oder legt diesen fest.
ViewInfos-Eigenschaft
Ruft einen Verweis auf das ViewInfoCollection-Objekt ab, das der Formularvorlage zugeordnet ist.
XmlLang-Eigenschaft
Ruft den Wert des xml:lang-Attributs im dem Formular zugrunde liegenden XML-Dokument ab.

Verwenden der XmlFormCollection-Klasse

Auf die XmlFormCollection-Klasse wird über die XmlForms-Eigenschaft der Application-Klasse zugegriffen. In einer Formularvorlage mit verwaltetem Code, die mit dem Objektmodell erstellt wurde, das von den Membern des Microsoft.Office.InfoPath-Namespace bereitgestellt wird, können Sie die Schlüsselwort (keyword) this (C#) oder Me (Visual Basic) in Ihrem Formularcode verwenden, um auf die Application-Klasse und ihre Member zuzugreifen.

Im folgenden Beispiel wird die XmlForms-Eigenschaft der Application-Klasse verwendet, um eine Objektvariable namens myForms zu erstellen, die auf das XDocumentsCollection-Objekt des derzeit ausgeführten instance von InfoPath verweist. Diese Variable wird dann zum Anzeigen der Anzahl von geöffneten Formularen verwendet.

// Create variable for accessing the XmlFormCollection.
XmlFormCollection myForms = this.Application.XmlForms;
// Display the number of forms that are currently open.
MessageBox.Show("Forms open: " + myForms.Count);
// Create variable for accessing the XmlFormCollection.
Dim myForms As XmlFormCollection = Me.Application.XmlForms
' Display the number of forms that are currently open.
MessageBox.Show("Forms open: " + myForms.Count)

Die Variable myForms kann dann auch zum Erstellen neuer Formulare (mithilfe der Methoden New oder NewFromTemplate) oder zum Öffnen vorhandener Formulare (mithilfe einer der Open-Methoden) verwendet werden.

Verwenden der XmlForm-Klasse

In einer Formularvorlage mit verwaltetem Code, die mit dem Objektmodell erstellt wurde, das von den Membern des Microsoft.Office.InfoPath-Namespace bereitgestellt wird, können Sie die Schlüsselwort (keyword) this (C#) oder Me (Visual Basic) in Ihrem Formularcode verwenden, um direkt auf die Member der XmlForm-Klasse zuzugreifen (ohne dass eine Objektvariable erforderlich ist, die einen Verweis auf die XmlForm-Klasse herstellt).

Zugreifen auf die Eigenschaftenwerte eines Formulars

Im folgenden Beispiel wird das Schlüsselwort this oder Me für den Zugriff auf die Eigenschaften New, ReadOnly, Signed und Uri der XmlForm-Klasse und zum Anzeigen der zurückgegebenen Werte für das aktuelle Formular in einem Meldungsfeld verwendet.

MessageBox.Show(
   "Is new: " + this.New + System.Environment.NewLine +
   "Is read-only: " + this.ReadOnly + System.Environment.NewLine +
   "Is signed: " + this.Signed + System.Environment.NewLine +
   "Form URI: " + this.Uri);
MessageBox.Show( _
   "Is new: " & Me.New & System.Environment.NewLine & _
   "Is read-only: " & Me.ReadOnly & System.Environment.NewLine + _
   "Is signed: " & Me.Signed & System.Environment.NewLine & _
   "Form URI: " & this.Uri)

Zugreifen auf die Datenquelle eines Formulars

Eine wichtige Eigenschaft der XmlForm-Klasse hinsichtlich Formulardaten ist die MainDataSource-Eigenschaft. Diese Eigenschaft gibt einen Verweis auf ein DataSource-Objekt zurück, das die zugrunde liegenden XML-Daten des aktuellen Formulars darstellt, das auch als Standard oder primäre Datenquelle des Formulars bezeichnet wird. Die DataSource-Klasse stellt die CreateNavigator-Methode bereit, die ein XPathNavigator-Objekt erstellt, das im Stammverzeichnis des dem Formular zugrunde liegenden XML-Dokuments positioniert ist. Die Eigenschaften und Methoden der XPathNavigator-Klasse können dann verwendet werden, um in den zugrunde liegenden XML-Daten des Formulars zu navigieren und sie zu bearbeiten.

Im folgenden Beispiel wird die MainDataSource-Eigenschaft der XmlForm-Klasse zum Erstellen eines XPathNavigator-Objekts verwendet, das im Stammknoten der Hauptdatenquelle des Formulars positioniert ist. Die OuterXml-Eigenschaft der XPathNavigator-Klasse wird dann verwendet, um den gesamten Inhalt des einem Formular zugrunde liegenden XML-Dokuments zurückzugeben und anzuzeigen.

// Get outer XML of the underlying XML document.
string myDoc = this.MainDataSource.CreateNavigator.OuterXml.ToString();
// Display XML.
MessageBox.Show(myDoc);
' Get outer XML of the underlying XML document.
Dim myDoc As String myDoc = _
   Me.MainDataSource.CreateNavigator.OuterXml.ToString()
' Display XML.
MessageBox.Show(myDoc)

Hinweis

Da InfoPath die MainDataSource-Eigenschaft als Standardeigenschaft für das XmlForm-Objekt behandelt, auf das zugegriffen wird, wenn das Schlüsselwort this oder Me verwendet wird, können Sie sie in der zum Erstellen des XPathNavigator-Objekts verwendeten Codezeile auslassen.

Weitere Informationen zur XPathNavigator-Klasse in der Geschäftslogik einer InfoPath-Formularvorlage finden Sie unter Arbeiten mit den XPathNavigator- und XPathNodeIterator-Klassen.

Zugreifen auf Daten über die Formularvorlagendatei eines Formulars

Auf Informationen zu einem Formular zugeordnete Formularvorlage, einschließlich der Formulardefinitionsdatei (XSF) und der enthaltenen XML-Daten kann auch mithilfe der XmlForm-Klasse zugegriffen werden. Auf diese Informationen wird mithilfe der Template-Eigenschaft zugegriffen, die einen Verweis auf ein FormTemplate-Objekt zurückgibt, das die dem aktuellen Formular zugeordnete Formularvorlage darstellt.

Im folgenden Beispiel zeigt das erste Meldungsfeld einige der Daten an, die über die Template-Klasse verfügbar sind, z. B. den Speicherort des Uniform Resource Identifier (URI) (unter Verwendung der URI-Eigenschaft ), den Cachebezeichner (mithilfe der CacheId-Eigenschaft ) und seine Versionsnummer (mithilfe der Version-Eigenschaft ). Im nächsten Meldungsfeld wird die Manifest-Eigenschaft der Template-Klasse verwendet, um ein XPathNavigator-Objekt zu erstellen, das zum Anzeigen des Quell-XML der Formulardefinitionsdatei (XSF) verwendet wird.

// Display form template properties.
MessageBox.Show(
   "Cache ID: " + this.Template.CacheId + System.Environment.NewLine +
   "URI: " + this.ReadOnly + System.Environment.NewLine +
   "Version: " + this.Signed, "Form Template Properties");
// Display form definition file XML.
MessageBox.Show(this.Template.Manifest.OuterXml, 
   "Form Definition File XML");
' Display form template properties.
MessageBox.Show( _
   "Cache ID: " & Me.Template.CacheId & System.Environment.NewLine &
   "URI: " & Me.ReadOnly & System.Environment.NewLine &
   "Version: " & Me.Signed, "Form Template Properties")
' Display form definition file XML.
MessageBox.Show(Me.Template.Manifest.OuterXml, _
   "Form Definition File XML")