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")