Procédure d'accès aux données de formulaire
Pour utiliser les fonctionnalités avancées d'un formulaire InfoPath, il est souvent nécessaire d'accéder par programme aux informations sur le document XML sous-jacent du formulaire et aux données qu'il contient, ou d'exécuter certaines actions sur le document XML. Le modèle objet InfoPath prend en charge l'accès et la manipulation d'un document XML sous-jacent d'un formulaire par le biais de l'utilisation de la classe XmlForm en association avec la classe XmlFormCollection.
La classe XmlForm est l'une des plus utiles dans un modèle objet InfoPath, car ce type fournit une gamme de propriétés et de méthodes qui non seulement interagissent avec le document XML sous-jacent d'un formulaire, mais exécutent également un grand nombre d'actions qui sont disponibles dans l'interface utilisateur d'InfoPath.
Vue d'ensemble de la classe XmlFormCollection
La classe XmlFormCollection fournit les méthodes et les propriétés suivantes que les développeurs de formulaires peuvent utiliser pour gérer les objets XmlForm que la collection contient.
Nom | Description |
---|---|
Méthode New |
Crée un nouveau formulaire basé sur le formulaire spécifié. |
Méthode New (surcharge 1) |
Crée un nouveau formulaire basé sur le formulaire spécifié en utilisant le comportement du mode d'ouverture indiqué. |
Méthode NewFromFormTemplate |
Crée un nouveau formulaire basé sur le modèle de formulaire spécifié. |
Méthode NewFromFormTemplate (surcharge 1) |
Crée un formulaire basé sur le modèle de formulaire spécifié et sur les données XML. |
Méthode NewFromFormTemplate (surcharge 2) |
Crée un formulaire basé sur le modèle de formulaire spécifié avec des données spécifiées par un objet XPathNavigator. |
Méthode NewFromFormTemplate (surcharge 3) |
Crée un formulaire basé sur le modèle de formulaire spécifié avec des données spécifiées par un objet XPathNavigator en utilisant le comportement du mode d'ouverture indiqué. |
Méthode Open |
Ouvre le formulaire spécifié. |
Méthode Open (surcharge 1) |
Ouvre le formulaire spécifié à l'aide du mode d'ouverture spécifié. |
Propriété Count |
Récupère le nombre d'objets XmlForm contenus dans la collection. |
Propriété Item |
Obtient une référence à l'objet XmlForm spécifié dans la collection par la valeur de l'index. |
Présentation de l'interface XmlForm
La classe XmlForm fournit les méthodes et les propriétés suivantes que les développeurs de formulaires peuvent utiliser pour interagir avec les actions et exécuter des actions sur le document XML sous-jacent d'un formulaire.
Nom | Description |
---|---|
Méthode Close |
Ferme le formulaire. |
Méthode GetWorkflowTasks |
Obtient une référence à une collection Microsoft.Office.Core.WorkflowTasks pour le formulaire actif. |
Méthode GetWorkflowTemplates |
Obtient une référence à une collection Microsoft.Office.Core.WorkflowTemplates pour le formulaire actif. |
Méthode MergeForm |
Fusionne le formulaire actif avec le formulaire spécifié par un chemin d'accès ou une URL. |
Méthode MergeForm (surcharge 1) |
Fusionne le formulaire actif avec le formulaire cible spécifié dans le nœud renvoyé par l'objet XPathNavigator passé à la méthode. |
Méthode NotifyHost |
Fournit une valeur personnalisée à l'application hôte ou à la page ASPX. |
Méthode Print |
Imprime le contenu d'un formulaire tel qu'il s'affiche dans la vue active du formulaire. |
Méthode Print (surcharge 1) |
Imprime le contenu du formulaire tel qu'il est rendu dans la vue active du formulaire en affichant la boîte de dialogue Imprimer. |
Méthode Save |
Enregistre le formulaire dans l'URL (Uniform Resource Locator) qui lui est actuellement associée. |
Méthode SaveAs |
Enregistre le formulaire dans l'URL (Uniform Resource Locator) spécifiée. |
Méthode SetSaveAsDialogFilename |
Définit le nom de fichier par défaut dans la boîte de dialogue Enregistrer sous. |
Méthode SetSaveAsDialogLocation |
Définit le chemin d'accès par défaut pour enregistrer le formulaire dans la boîte de dialogue Enregistrer sous. |
Méthode Submit |
Envoie le formulaire à l'aide de l'opération d'envoi définie dans le modèle de formulaire. |
Propriété CurrentView |
Obtient un objet View qui représente la vue active du formulaire. |
Propriété DataConnections |
Obtient un objet DataConnectionCollection associé au formulaire. |
Propriété DataSources |
Obtient l'objet DataSourceCollection associé au formulaire. |
Propriété Dirty |
Obtient une valeur qui indique si les données d'un formulaire ont été modifiées depuis leur dernier enregistrement. |
Propriété Errors |
Obtient une référence à la collection FormErrorCollection, associée à un formulaire. |
Propriété Extension |
Obtient un objet Object qui permet d'accéder aux fonctions et variables globales contenues dans le fichier de code de formulaire principal d'un formulaire à l'aide de System.Reflection. |
Propriété FormState |
Obtient une référence à un conteneur de propriétés de type System.Collections.IDictionary que les formulaires avec navigation activée peuvent utiliser pour conserver les informations d'état entre les sessions sur le serveur. |
Propriété Host |
Obtient un objet System.Object que le code s'exécutant dans une instance hébergée d'InfoPath peut utiliser pour accéder au modèle objet de l'application hôte. |
Propriété Hosted |
Indique si InfoPath est hébergé sous forme de contrôle dans une autre application. |
Propriété HostName |
Obtient le nom de l'application qui héberge InfoPath sous forme de contrôle. |
Propriété MainDataSource |
Obtient un objet DataSource qui représente la source de données principale du formulaire. |
Propriété NamespaceManager |
Obtient une référence à un objet XmlNamespaceManager qui permet de résoudre, d'ajouter ou de supprimer des espaces de noms utilisés dans le formulaire. |
Propriété New |
Obtient une valeur qui indique s'il s'agit d'un nouveau formulaire. |
Propriété Permission |
Obtient une référence à un objet Permission associé au formulaire. |
Propriété QueryDataConnection |
Obtient une référence à l'objet DataConnection qui représente la connexion de données associée au formulaire. |
Propriété ReadOnly |
Obtient une valeur qui indique si un modèle de formulaire est en lecture seule ou verrouillé. |
Propriété Recovered |
Obtient une valeur qui indique si un formulaire a été enregistré pour la dernière fois par une opération de récupération automatique. |
Propriété Signed |
Obtient une valeur qui indique si un formulaire a été signé numériquement à l'aide de signatures numériques. |
Propriété SignedDataBlocks |
Obtient une référence à la collection SignedDataBlockCollection, associée à un formulaire. |
Propriété TaskPanes |
Obtient une référence à la collection TaskPaneCollection, associée à un modèle de formulaire. |
Propriété Template |
Obtient une référence à l'objet FormTemplate qui représente le manifeste (.xsf) du modèle de formulaire associé au formulaire. |
Propriété Uri |
Obtient l'URI (Uniform Resource Identifier) d'un formulaire. |
Propriété UserRole |
Obtient ou définit l'utilisateur actuel du nom de rôle du formulaire. |
Propriété ViewInfos |
Obtient une référence à l'objet ViewInfoCollection associé au modèle de formulaire. |
Propriété XmlLang |
Obtient la valeur de l'attribut xml:lang dans le document XML sous-jacent du formulaire. |
Utilisation de la classe XmlFormCollection
La classe XmlFormCollection est accessible via la propriété XmlForms de la classe Application. Dans un modèle de formulaire contenant du code managé, créé à l'aide de l'objet de modèle fourni par les membres de l'espace de noms Microsoft.Office.InfoPath, vous pouvez utiliser le mot clé this (C#) ou Me (Visual Basic) dans le code du formulaire pour accéder à la classe Application et à ses membres.
L'exemple suivant utilise la propriété XmlForms de la classe Application pour créer une variable d'objet appelée myForms qui fait référence à l'objet XDocumentsCollection de l'instance InfoPath actuellement exécutée. Cette variable est ensuite utilisée pour afficher le nombre total de formulaires ouverts.
// 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)
La variable myForms peut ensuite être utilisée pour créer de nouveaux formulaires (à l'aide de la méthode New ou NewFromTemplate) ou ouvrir des formulaires existants (à l'aide de l'une des méthodes Open).
Utilisation de la classe XmlForm
Dans un modèle de formulaire avec code managé, créé à l'aide du modèle objet fourni par les membres de l'espace de noms Microsoft.Office.InfoPath, vous pouvez utiliser le mot clé this (C#) ou Me (Visual Basic) dans le code du formulaire pour accéder aux membres de la classe XmlForm directement (sans nécessiter une référence au mot clé XmlForm).
Accès aux valeurs des propriétés d'un formulaire
L'exemple suivant utilise le mot clé this ou Me pour accéder aux propriétés New, ReadOnly, Signed et Uri de la classe XmlForm et afficher les valeurs retournées pour le formulaire actuel dans une zone de message.
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)
Accès à la source de données d'un formulaire
Une propriété essentielle de la classe XmlForm relative aux données du formulaire est la propriété MainDataSource. Elle retourne une référence à un objet DataSource qui représente les données XML sous-jacentes du formulaire actuel qui est également référencé en tant que source de données principale ou primaire du formulaire. La classe DataSource fournit la méthode CreateNavigator qui crée un objet System.Xml.XPath.XPathNavigator situé à la racine du document XML sous-jacent du formulaire. Les propriétés et les méthodes de la classe XPathNavigator peuvent ensuite être utilisées pour parcourir et modifier les données XML sous-jacentes du formulaire.
L'exemple suivant utilise la propriété MainDataSource de la classe XmlForm pour créer un objet XPathNavigator situé à la racine de la source de données principale du formulaire. La propriété OuterXml de la classe XPathNavigator est ensuite utilisée pour retourner et afficher tout le contenu du document XML sous-jacent d'un formulaire.
// 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)
Remarque |
---|
Étant donné qu'InfoPath considère la propriété MainDataSource comme une propriété par défaut de l'objet XmlForm accédé à l'aide du mot clé this ou Me, vous pouvez le supprimer de la ligne de code utilisée pour créer l'objet XPathNavigator. |
Pour plus d'informations sur la classe XPathNavigator dans la logique professionnelle d'un modèle de formulaire InfoPath, voir Utilisation des classes XPathNavigator et XPathNodeIterator.
Accès aux données relatives à un fichier de modèle de formulaire
Les informations sur le modèle de formulaire associé à un formulaire, y compris le fichier de définition du formulaire (.xsf ) et les données XML sources qu'il contient sont également accessibles à l'aide de la classe XmlForm. Ces informations sont accessibles à l'aide de la propriété Template qui retourne une référence à un objet FormTemplate qui représente le modèle de formulaire associé au formulaire actuel.
Dans l'exemple suivant, la première zone de message affiche certaines des données disponibles dans la classe Template, notamment l'emplacement de l'URI (Uniform Resource Identifier) (à l'aide de la propriété Uri), l'identificateur de cache (à l'aide de la propriété CacheId) et le numéro de version (à l'aide de la propriété Version). La zone de message suivante utilise la propriété Manifest de la classe Template pour créer un objet XPathNavigator utilisé pour afficher le code XML source du fichier de définition du formulaire (.xsf).
// 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")