Vorgehensweise: 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 das Zugreifen und Bearbeiten des einem Formular zugrunde liegenden XML-Dokuments mithilfe der XmlForm-Klasse in Verbindung mit der XmlFormCollection-Klasse.
Die XmlForm-Klasse gehört zu den nützlichsten Typen innerhalb des InfoPath-Objektmodells, da sie eine Vielzahl von Eigenschaften und Methoden bereitstellt, die nicht nur mit dem einem Formular zugrunde liegenden XML-Dokument zusammenarbeiten, sondern auch viele der Aktionen ausführen, die über die InfoPath-Benutzeroberfläche verfügbar sind.
Übersicht über die XmlFormCollection-Klasse
Die XmlFormCollection-Klasse stellt die folgenden Methoden und Eigenschaften bereit, mit deren Hilfe Entwickler die in der Auflistung enthaltenen XmlForm-Objekte verwalten können.
Name | Beschreibung |
---|---|
New-Methode |
Erstellt basierend auf dem angegebenen Formular ein neues Formular. |
New-Methode (Überladung 1) |
Erstellt basierend auf dem angegebenen Formular ein neues Formular mithilfe des angegebenen Öffnungsmodusverhaltens. |
NewFromFormTemplate-Methode |
Erstellt basierend auf der angegebenen Formularvorlage ein neues Formular. |
NewFromFormTemplate-Methode (Überladung 1) |
Erstellt basierend auf der angegebenen Formularvorlage und XML-Daten ein neues Formular. |
NewFromFormTemplate-Methode (Überladung 2) |
Erstellt ein neues Formular auf Grundlage der angegebenen Formularvorlage mit Daten, die durch ein XPathNavigator-Objekt angegeben werden. |
NewFromFormTemplate-Methode (Überladung 3) |
Erstellt ein neues Formular auf Grundlage der angegebenen Formularvorlage mit durch ein XPathNavigator-Objekt angegebenen Daten mithilfe des angegebenen Öffnungsmodusverhaltens. |
Open-Methode |
Öffnet das angegebene Formular. |
Open-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-Schnittstelle
Die XmlForm-Klasse stellt die folgenden Methoden und Eigenschaften bereit, die Entwickler für die Interaktion mit dem einem Formular zugrunde liegenden XML-Dokument und für die Ausführung von Aktionen in diesem Dokument verwenden 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-Methode |
Führt das aktuelle Formular mit dem über den Pfad oder URL angegebenen Formular zusammen. |
MergeForm-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-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 dem Formular zugeordnetes DataConnectionCollection-Objekt ab. |
DataSources-Eigenschaft |
Ruft das dem Formular zugeordnete DataSourceCollection-Objekt ab. |
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 einem Formular zugeordnete FormErrorCollection-Auflistung ab. |
Extension-Eigenschaft |
Ruft Object mithilfe von System.Reflection für den Zugriff auf die im primären Formularcode eines Formulars enthaltenen Funktionen und globalen Variablen ab. |
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, welches die Hauptdatenquelle des Formulars darstellt. |
NamespaceManager-Eigenschaft |
Ruft einen Verweis auf das XmlNamespaceManager-Objekt ab, das zum Auflösen, Hinzufügen oder Entfernen der im Formular verwendeten Namespace verwendet werden kann. |
New-Eigenschaft |
Ruft einen Wert ab, der angibt, ob ein Formular neu ist. |
Permission-Eigenschaft |
Ruft einen Verweis auf das Permission-Objekt ab, das dem Formular zugeordnet ist. |
QueryDataConnection-Eigenschaft |
Ruft einen Verweis auf das DataConnection-Objekt ab, das die dem Formular zugeordnete Datenverbindung darstellt. |
ReadOnly-Eigenschaft |
Ruft einen Wert ab, der angibt, ob eine Formularvorlage schreibgeschützt oder gesperrt ist. |
Recovered-Eigenschaft |
Ruft einen Wert ab, der angibt, ob ein Formular zuletzt mithilfe eines AutoWiederherstellen-Speichervorgangs gespeichert wurde. |
Signed-Eigenschaft |
Ruft einen Wert ab, der angibt, ob ein Formular mithilfe digitaler Signaturen digital signiert wurde. |
SignedDataBlocks-Eigenschaft |
Ruft einen Verweis auf die einem Formular zugeordnete SignedDataBlockCollection-Auflistung ab. |
TaskPanes-Eigenschaft |
Ruft einen Verweis auf die einer Formularvorlage zugeordneten TaskPaneCollection-Auflistung ab. |
Template-Eigenschaft |
Ruft einen Verweis auf das FormTemplate-Objekt ab, das das dem Formular zugeordnete Manifest (XSF) der 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
Der Zugriff auf die XmlFormCollection-Klasse erfolgt über die XmlForms-Eigenschaft der Application-Klasse. In einer Formularvorlage mit verwaltetem Code, das mithilfe des vom Microsoft.Office.InfoPath-Namespace bereitgestellten Objektmodells erstellt wurde, können Sie das im Formularcode enthaltene Schlüsselwort this (C#) oder Me (Visual Basic) zum Zugreifen auf die Application-Klasse und ihre Member verwenden.
Im folgenden Beispiel wird die XmlForms-Eigenschaft der Application-Klasse zum Erstellen einer Objektvariable mit Namen myForms verwendet, die auf das XDocumentsCollection-Objekt der derzeit ausgeführten Instanz 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 von den Membern des Microsoft.Office.InfoPath-Namespace bereitgestellten Objektmodell erstellt wurde, können Sie das Schlüsselwort this (C#) oder Me (Visual Basic) im Formularcode für den direkten Zugriff auf die Member der XmlForm-Klasse verwenden (es ist kein Verweis auf das Schlüsselwort XmlForm erforderlich).
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: " & this.New + System.Environment.NewLine & _
"Is read-only: " & this.ReadOnly & System.Environment.NewLine + _
"Is signed: " & this.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, und das auch als die Haupt- oder primäre Datenquelle des Formulars bezeichnet wird. Die DataSource-Klasse stellt die CreateNavigator-Methode bereit, die ein System.Xml.XPath.XPathNavigator-Objekt erstellt, das im Stammknoten des zugrunde liegenden XML-Dokuments des Formulars positioniert ist. Die Eigenschaften und Methoden der XPathNavigator-Klasse können dann verwendet werden, um durch die 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 alle Inhalte des zugrunde liegenden XML-Dokuments eines Formulars 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 der Geschäftslogik in einer InfoPath-Formularvorlage finden Sie unter Vorgehensweise: Arbeiten mit den Klassen "XPathNavigator" und "XPathNodeIterator".
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 werden im ersten Meldungsfeld einige der Daten angezeigt, die über die Template-Klasse verfügbar sind, beispielsweise der entsprechende URI-(Uniform Resource Identifier-)Speicherort (mithilfe der Uri-Eigenschaft), der Cachebezeichner (mithilfe der CacheId-Eigenschaft) und die entsprechende Versionsnummer (mithilfe der Version-Eigenschaft). Im nächsten Meldungsfeld wird die Manifest-Eigenschaft der Template-Klasse zum Erstellen eines XPathNavigator-Objekts verwendet, mit dem der Quell-XML-Code der Formulardefinitionsdatei (XSF) angezeigt 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")