Hébergement de l'environnement d'édition de formulaires InfoPath 2007 dans un formulaire Web personnalisé

Paru le 05 Juin 2006

Par Mike Talley, Namita Sheokand, Boris Rivers-Moore ; Microsoft Corporation

Concerne :
Microsoft Office InfoPath 2007
Microsoft Office SharePoint Server 2007

Résumé : Apprenez à utiliser le contrôle ASP.NET XmlFormView, avec InfoPath Forms Services, pour créer des pages Web personnalisées afin d'afficher des formulaires Web InfoPath interactifs. (13 pages imprimées)

Sur cette page

Introduction Introduction
Configuration requise Configuration requise
Pour concevoir l'exemple de modèle de formulaire Pour concevoir l'exemple de modèle de formulaire
Pour publier l'exemple de modèle de formulaire Pour publier l'exemple de modèle de formulaire

Introduction

Microsoft Office InfoPath Forms Services, parfois appelé Forms Services, affiche le contrôle ASP.NET XmlFormView dans une page Web personnalisée. Les formulaires Web sont les équivalents totalement fonctionnels des formulaires conçus dans Microsoft Office InfoPath 2007, mais ils ne nécessitent pas l'installation du client InfoPath sur l'ordinateur utilisant le formulaire. InfoPath Forms Services doit être activé sur le serveur, soit via Microsoft Office SharePoint Server 2007, soit via Microsoft Office Forms Server 2007, pour que les formulaires InfoPath soient affichés dans le navigateur. Le contrôle XmlFormView est disponible sur les serveurs qui exécutent InfoPath Forms Services, ce qui est intéressant pour les entreprises qui souhaitent intégrer la fonctionnalité des formulaires InfoPath dans leur infrastructure Web organisationnelle.

Dans la mesure où ces services sont une extension de Microsoft Windows SharePoint Server (WSS) (version 3), la procédure pour ouvrir, configurer et ajouter le contrôle XmlFormView à une nouvelle page Web nécessite des techniques de développement SharePoint courantes, telles que l'utilisation du gestionnaire IIS (Internet Information Services) pour rechercher le chemin du site SharePoint, ouvrir le site dans Microsoft Visual Studio 2005 et configurer le fichier de configuration Web pour le débogage.

La première section de cet article décrit comment créer la page Web et ajouter le contrôle XmlFormView à la nouvelle page. La section suivante explique comment créer et publier un modèle de formulaire Web. La troisième section décrit comment écrire le code permettant de contrôler le contrôle XmlFormView, tandis que la quatrième section explique comment déployer une page Web personnalisée à l'aide d'un package SharePoint Feature.

Configuration requise

  • Microsoft Office InfoPath 2007 (bêta 2)

  • Microsoft Office SharePoint Server 2007 (bêta 2)

  • Microsoft Visual Studio 2005

Création de pages Web personnalisées dans SharePoint Server 2007

Quatre tâches sont requises pour créer une page Web personnalisée gérée par Windows SharePoint Services v3. Chacune des sous-sections suivantes inclut une procédure à suivre pour passer à la tâche suivante. Chaque procédure de cette section se base sur les procédures précédentes ; il est donc important de les exécuter dans l'ordre.

Remarque : Visual Studio 2005 doit être installé sur le serveur qui exécute InfoPath Forms Services.

Ouverture du site SharePoint et création d'une page Web

  1. Ouvrez le menu Démarrer, cliquez sur Outils d'administration, puis cliquez sur Gestionnaire Internet Information Services (IIS).

  2. Cliquez sur le signe plus en regard de NomServeur (ordinateur local), où NomServeur est le nom de votre serveur, afin de développer la liste des services IIS disponibles sur le serveur.

  3. Cliquez sur le signe plus en regard de Sites Webafin de développer la liste des sites Web gérés par IIS.

  4. Cliquez avec le bouton droit de la souris sur SharePoint (80) et sélectionnez Propriétés.

  5. Sous l'onglet ASP.NET de la boîte de dialogue Propriétés SharePoint (80), sélectionnez et copiez le texte de la zone Emplacement des fichiers, sans copier le web.config pouvant apparaître à la fin de la chaîne Emplacement des fichiers. Cette chaîne se présente généralement comme l'un des chemins suivants :

    • C:\Inetpub\wwwroot\wss\VirtualDirectories\80

    • C:\Inetpub\wwwroot\wss\VirtualDirectories\GUID

  6. Lancez Visual Studio 2005.

  7. Dans le menu Fichier, cliquez sur Ouvrir, puis cliquez sur Site Web.

  8. Cliquez sur le bouton Système de fichiers, puis collez le chemin copié dans la zone Dossier, comme illustré figure 1.

  9. Cliquez avec le bouton droit de la souris sur le chemin du site Web dans Explorateur de solutions, puis sélectionnez Nouveau dossier.

  10. Tapez un nom pour le dossier, par exemple « CustomPage ».

  11. Cliquez avec le bouton droit de la souris sur le nouveau dossier et sélectionnez Ajouter un nouvel élément.

  12. Tapez un nom pour le nouveau formulaire Web, par exemple "MyCustomPage", sélectionnez Visual C# comme Langage, puis sélectionnez l'option Placer le code dans un fichier distinct ; cliquez ensuite sur Ajouter.

Ouverture du site SharePoint avec le chemin de fichier Visual Studio 2005
Figure 1. Ouverture du site SharePoint avec le chemin de fichier Visual Studio 2005

Configuration des propriétés des pages et ajout du contrôle XmlFormView

Toutes les pages Web personnalisées qui incluent le contrôle XmlFormView nécessitent que l'état de session soit activé dans la page et que les autres options par défaut soient supprimées ou modifiées. Effectuez cette procédure pour configurer la page afin d'héberger le contrôle XmlFormView, ajoutez le contrôle XmlFormView à la Boîte à outils Visual Studio, puis ajoutez-le à la page Web.

  • Dans les Propriétés du document du nouveau formulaire Web, cliquez sur True pour la propriété EnableSessionState.

  • Cliquez sur le bouton Source dans le coin inférieur gauche afin d'afficher la page en mode source.

  • Supprimez la balise de déclaration Doctype par défaut. Cette balise commence par <!DOCTYPE html PUBLIC

  • Modifiez la balise Body afin qu'elle contienne l'attribut de style.

  • Modifiez la balise Form afin qu'elle contienne l'attribut enctype suivant : enctype="multipart/form-data"

Remarque L'attribut type d'encodage (enctype) est nécessaire uniquement si vous prévoyez d'utiliser le contrôle Pièce jointe dans un formulaire chargé dans le contrôle XmlFormView. Si cet attribut n'est pas défini correctement, le contrôle Pièce jointe semble fonctionner, mais ne télécharge pas un fichier vers le serveur exécutant InfoPath Forms Services.

  • Lorsque vous avez terminé, votre page doit ressembler à ceci :
  <%@ Register Assembly="Microsoft.Office.InfoPath.Server, Version=12.0.0.0, 
  Culture=neutral, PublicKeyToken=71e9bce111e9429c"
    Namespace="Microsoft.Office.InfoPath.Server.Controls" TagPrefix="cc1" %>

<html  >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body style="margin: 0px;overflow:auto">
    <form id="form1" runat="server" enctype="multipart/form-data">
  • Cliquez sur le bouton Conception dans le coin inférieur gauche afin d'afficher la page en mode conception.

  • Développez la Boîte à outils, qui se trouve généralement à gauche dans Visual Studio, puis ajoutez le contrôle XmlFormView à la section Général.

  • Dans la Boîte à outils, réduisez la section Standard et développez la section Général.

  • Cliquez avec le bouton droit de la souris sous le titre Général et sélectionnez Choisir les éléments.

  • Dans la boîte de dialogue Choisir des éléments de boîte à outils, sous l'onglet Composants .NET Framework, sélectionnez XmlFormView et cliquez sur OK.

Si vous ne voyez pas XmlFormView, vous pouvez le rechercher en cliquant sur le bouton Parcourir et en accédant à l'emplacement de l'assembly Microsoft.Office.InfoPath.Server.dll. Il est généralement stocké dans Lecteur:\Program Files\Microsoft Office Servers\12.0\Bin, où Lecteur est l'emplacement où est installé Microsoft Office SharePoint Server 2007.

  • Sélectionnez l'assembly Microsoft.Office.InfoPath.Server.dll et cliquez sur OK.

  • Dans la boîte de dialogue Choisir des éléments de boîte à outils, sélectionnez XmlFormView et cliquez sur OK.

  • Dans la section Général de la Boîte à outils, faites glisser le contrôle XmlFormView sur la nouvelle page. La nouvelle page doit alors ressembler à la figure 2.

  • Enregistrez le nouveau formulaire Web.

Contrôle XmlFormView dans une page Web vierge
Figure 2. Contrôle XmlFormView dans une page Web vierge

Configuration de SharePoint et réinitialisation de IIS

Configurez les options pour le site SharePoint, enregistrez la solution Visual Studio, puis réinitialisez le service IIS pour que SharePoint reconnaisse vos changements.

  • Dans Visual Studio, dans le menu Site Web, cliquez sur Options de démarrage.

  • Dans la section Serveur, cliquez sur Utiliser le serveur personnalisé.

  • Dans la zone URL de base, tapez http://NomServeur , où NomServeur est le nom de votre serveur.

  • Cliquez sur OK.

  • Dans le menu Fichier, cliquez sur Enregistrer tout, et attribuez un nom et un emplacement à la solution.

  • Dans le menu Démarrer, cliquez sur Tous les programmes, cliquez sur Microsoft Visual Studio 2005, cliquez sur Outils Visual Studio, puis ouvrez une fenêtre Invite de commande Microsoft Visual Studio 2005.

  • À l'invite, tapez iisreset et appuyez sur Entrée.

  • Lorsque Les services Internet ont été redémarrés avec succès apparaît, fermez la fenêtre Invite de commande.

Débogage de la page Web personnalisée

Pour déboguer la page Web personnalisée, vous devez modifier les options Web du site SharePoint, contenues dans le fichier web.config. La procédure suivante ajoute automatiquement cet indicateur au fichier web.config.

  • Dans Visual Studio 2005, sélectionnez le contrôle XmlFormControl1 sur la page.

  • Collez l'emplacement XsnLocation copié à partir de l'URL vers la propriété XsnLocation du contrôle XmlFormControl1.

  • Enregistrez la page Web personnalisée.

  • Appuyez sur F5 pour lancer le débogage. Si une alerte apparaît, indiquant que le fichier web.config n'est pas configuré pour le débogage, cliquez sur OK. Cela ajoute automatiquement l'indicateur de débogage au fichier web.config.

Si vous n'avez pas de modèle de formulaire Web pour tester le contrôle XmlFormControl1, utilisez la procédure suivante pour créer et publier un modèle de formulaire Web élémentaire.

Chargement de modèles de formulaire Web InfoPath dans le contrôle

Modifiez la propriété XsnLocation du contrôle XmlFormView1 afin qu'elle pointe vers un modèle de formulaire publié sur le serveur. Notez que le modèle de formulaire doit être compatible Web pour être utilisé par le contrôle XmlFormView, et il doit résider dans le même emplacement que le formulaire Web personnalisé.

Utilisez les procédures suivantes pour créer un modèle de formulaire Web et le publier sur un site SharePoint.

Création d'un modèle de formulaire Web

Le moyen le plus simple de rendre un modèle de formulaire compatible Web consiste à créer un nouveau modèle de formulaire vierge compatible avec InfoPath et InfoPath Forms Services. Un modèle de formulaire compatible avec InfoPath et InfoPath Forms Services est appelé modèle de formulaire compatible Web. Un modèle de formulaire publié sur un serveur avec InfoPath Forms Services est appelé modèle de formulaire Web.

Remarque Certains contrôles, structures et connexions de données disponibles dans les modèles de formulaire standard ne sont pas disponibles dans les modèles de formulaire compatibles Web. Les exceptions telles que celles de l'ensemble de fonctionnalités Design Once d'InfoPath 2007 peuvent être affichées dans le volet de tâches Vérificateur de conception lorsque le paramètre de compatibilité du modèle de formulaire est InfoPath and InfoPath Forms Services.

Pour concevoir l'exemple de modèle de formulaire

  • Ouvrez Microsoft Office InfoPath 2007 (bêta) et, dans la boîte de dialogue Démarrage, cliquez sur Concevoir un modèle de formulaire.

  • Dans la boîte de dialogue Concevoir un formulaire, cliquez sur Modèle de formulaire, Vierge et Activer les fonctionnalités compatibles avec le navigateur uniquement, comme illustré figure 3.

Création d'un formulaire dans la boîte de dialogue Concevoir un formulaire
Figure 3. Création d'un formulaire dans la boîte de dialogue Concevoir un formulaire

  • Cliquez sur OK.

  • Dans le volet des tâches, cliquez sur Contrôles.

  • Ajoutez un contrôle Sélecteur de dates

  • Cliquez avec le bouton droit de la souris sur Sélecteur de dates et sélectionnez Propriétés du sélecteur de dates.

  • Cliquez sur le bouton de fonction à droite de la zone Valeur.

  • Dans la boîte de dialogue Insérer une formule, cliquez sur le bouton Insérer une fonction.

  • Cliquez sur la fonction today et cliquez sur OK. Cliquez deux fois sur OK pour fermer toutes les boîtes de dialogue. La date actuelle est ainsi insérée dans le contrôle Sélecteur de dates à l'ouverture du formulaire.

  • Ajoutez une Section facultative au formulaire.

  • Cliquez avec le bouton droit de la souris sur la Section facultative et sélectionnez Propriétés de la section facultative.

  • Sous l'onglet Données, cliquez sur Inclure la section dans le formulaire par défaut.

  • Sous l'onglet Affichage, cliquez sur le bouton Mise en forme conditionnelle.

  • Dans la boîte de dialogue Format conditionnel, cliquez sur Ajouter.

  • Dans la troisième zone sous Si cette condition est vraie, ouvrez la liste déroulante et sélectionnez Utiliser une formule.

  • Dans la boîte de dialogue Insérer une formule, cliquez sur le bouton Insérer une fonction.

  • Cliquez sur la fonction today et cliquez sur OK, puis de nouveau sur OK.

  • Dans la boîte de dialogue Format conditionnel, ouvrez la liste déroulante Ombrage et sélectionnez une couleur, puis cliquez sur OK.

  • Répétez les étapes 14 à 18, puis sélectionnez une couleur différente lorsque champ1 est supérieur à la date d'aujourd'hui, et lorsque champ1 est inférieur à la date d'aujourd'hui. Le formulaire dispose ainsi d'une certaine interactivité, de sorte que vous savez qu'il fonctionne dans le contrôle XmlFormView.

  • Lorsque vous avez terminé, cliquez sur OK dans la boîte de dialogue Format conditionnel, puis cliquez sur OK afin de faire disparaître la boîte de dialogue Propriétés de la section.

  • Le formulaire final est semblable à la figure 4.

Exemple de formulaire final dans InfoPath 2007
Figure 4. Exemple de formulaire final dans InfoPath 2007

Pour publier l'exemple de modèle de formulaire

  • Dans le menu Fichier, cliquez sur Enregistrer, puis enregistrez le modèle de formulaire sur le disque dur local.

  • Dans le menu Fichier, cliquez sur Publier.

  • Dans la boîte de dialogue Assistant de publication, sélectionnez Vers un serveur SharePoint avec ou sans InfoPath Forms Services, puis cliquez sur Suivant.

  • Tapez l'URL de votre serveur exécutant Office SharePoint Server 2007. Si vous avez créé votre page Web personnalisée dans un ensemble de sites, prenez soin de l'ajouter à l'URL, comme suit : http://NomServeur/sites/examplesite. Le modèle de formulaire et la page Web personnalisée doivent se trouver dans le même ensemble de sites.

  • Sélectionnez Activer ce formulaire pour qu'il puisse être rempli à l'aide d'un navigateur, sélectionnez Bibliothèque de documents, puis cliquez sur Suivant.

  • Cliquez sur Créer une nouvelle bibliothèque de documents et cliquez sur Suivant.

  • Tapez un nom pour la nouvelle bibliothèque de documents, puis cliquez sur Suivant.

  • Cliquez sur Suivant pour ignorer l'ajout de colonnes à la bibliothèque de documents.

  • Cliquez sur le bouton Publier.

  • Une fois le modèle de formulaire publié, cliquez sur le lien Ouvrir ce modèle de formulaire dans le navigateur dans la boîte de dialogue Assistant de publication.

  • Dans la barre Adresse de Microsoft Internet Explorer, copiez XsnLocation à partir de l'URL, en commençant par « http » et en terminant par « .xsn », puis fermez la fenêtre du navigateur.

  • Dans la boîte de dialogue Assistant de publication, cliquez sur Fermer.

Codage avec le contrôle XmlFormView

Diverses méthodes de contrôle du comportement du contrôle XmlFormView sont disponibles pour les développeurs, par exemple modifier l'état de modification, contrôler si les barres d'outils d'en-tête et de pied de page sont visibles, ou encore contrôler où le formulaire complété est enregistré. Ces options peuvent être contrôlées de manière déclarative via la définition des propriétés dans l'interface utilisateur Visual Studio, ou par programmation. Un exemple de modification de la propriété EditingStatus est inclus dans cette section.

Vous pouvez également transmettre des valeurs de la page Web vers le contrôle XmlFormView, ou transmettre des valeurs du contrôle XmlFormView vers la page Web. Des exemples sont fournis dans cette section pour exécuter ces tâches par programmation.

Contrôle de l'état d'édition du formulaire

Si vous ne souhaitez pas que le formulaire soit affiché lors du chargement de la page Web, configurez la propriété EditingStatus du contrôle XmlFormView sur Init dans les propriétés du contrôle XmlFormControl1 ou dans la balise de l'instance du contrôle dans la page source, ce qui peut donner quelque chose de semblable à ceci :

  <cc1:XmlFormView ID="XmlFormView1" runat="server" 
  XsnLocation="~sitecollection/FormServerTemplates/MyForm.xsn" EditingStatus="Init">

Dans cette balise de contrôle, ~sitecollection est utilisé comme variable SharePoint pour faciliter le déploiement de la page Web personnalisée sur plusieurs ensembles de sites. Si vous n'avez pas besoin de déployer la page Web personnalisée sur plusieurs ensembles de sites, vous pouvez simplement entrer l'URL entièrement qualifiée. Pour plus d'informations sur le déploiement d'une page Web personnalisée sur un ensemble de sites, consultez la section Déploiement d'une page Web personnalisée sur un site SharePoint non racine, plus loin dans cet article.

Une fois que l'utilisateur a effectué une action sur la page Web, par exemple un clic sur un bouton de la page, remplacez la propriété EditingStatus du formulaire par Editing afin d'initialiser et d'afficher le modèle de formulaire dans le contrôle XmlFormView1, comme dans l'exemple suivant :

protected void Button1_Click(object sender, EventArgs e)
{
    XmlFormView1.EditingStatus = XmlFormView.EditingStatus.Editing;
}

Transmettre une valeur de la page Web vers le formulaire

Pour que le code de la page définisse la valeur d'un champ du formulaire InfoPath, il doit se trouver dans un gestionnaire d'événements approprié. Si le code se trouve dans un événement du contrôle XmlFormView, tel que OnInitialize, les données du formulaire sont accessibles ou peuvent être modifiées directement, comme dans l'exemple suivant. Si le code se trouve dans un gestionnaire d'événements d'un autre contrôle de la page, tel que le gestionnaire OnClick d'un bouton, le code doit appeler la méthode DataBind du contrôle XmlFormView avant d'accéder aux données du formulaire.

Notez que l'événement OnInitialize est exécuté chaque fois qu'un formulaire InfoPath est chargé dans le contrôle XmlFormView. Cela peut être lors du premier chargement de la page Web, lorsque les propriétés XsnLocation ou XmlLocation du contrôle XmlFormView sont configurées pour pointer vers un autre formulaire, ou lorsque la propriété EditingStatus est passée de Init à Editing.

La procédure suivante nécessite qu'un contrôle Text Box soit ajouté à la page Web et au modèle de formulaire Web utilisé comme source du contrôle XmlFormView.

Pour transmettre une valeur de la page Web au formulaire

  • Dans la vue Conception de votre page Web, ajoutez un contrôle Zone de texte à la page. Dans le modèle de formulaire, ajoutez un contrôle Zone de texte à votre formulaire et republiez le modèle de formulaire sur le site SharePoint.

  • Passez à la vue Source de votre page Web et localisez la balise du contrôle XmlFormView1. Elle doit se présenter comme suit :

<cc1:XmlFormView ID="XmlFormView1" runat="server" Height="250px" Width="100%"
XsnLocation="http://ServerName/FormLibrary/Forms/template.xsn">

NomServeur et BibliothèqueFormulaires correspondent au nom de votre serveur exécutant InfoPath Forms Services et de votre bibliothèque de formulaires.

  • Déclarez le nom du gestionnaire d'événements OnInitialize dans la balise de contrôle XmlFormView :
<cc1:XmlFormView ID="XmlFormView1" runat="server" Height="250px" Width="100%"
XsnLocation="http://ServerName/FormLibrary/Forms/template.xsn"
OnInitialize="_xmlFormView1_OnInitialize" />
  • Cliquez avec le bouton droit de la souris dans la fenêtre Source de la page Web, puis cliquez sur Afficher le code. Une nouvelle fenêtre code-behind est ouverte. Ajoutez les instructions using suivantes :
using System.Xml;
using System.Xml.XPath;
  • Dans la même fenêtre, ajoutez le code du gestionnaire d'événements OnInitialize :
protected void _xmlFormView1_OnInitialize(object sender, EventArgs e)
{
    XPathNavigator xNavMain = XmlFormView1.XmlForm.MainDataSource.CreateNavigator();
    XmlNamespaceManager xNameSpace = new XmlNamespaceManager(new NameTable());
    xNameSpace.AddNamespace
    ("my", "http://schemas.microsoft.com/office/infopath/2003/myXSD/2006-04-20T16:26:21");
    XPathNavigator fTextBox1 = xNavMain.SelectSingleNode("my:myFields/my:field2", xNameSpace);
    fTextBox1.SetValue(TextBox1.Text);
}
  • Remplacez l'espace de noms XML correct par celui du formulaire que vous chargez, puis remplacez la valeur XPath du champ de l'exemple, my:field2, par la valeur XPath du champ de votre formulaire que vous souhaitez alimenter avec la valeur de la zone de texte de la page Web.

    AstuceVous pouvez maintenant copier le XPath de n'importe quel contrôle vers le Presse-papiers en cliquant avec le bouton droit de la souris sur le contrôle dans le volet de tâches Source de données dans l'interface de conception InfoPath, puis en cliquant sur Copier XPath.

Transmettre une valeur du formulaire vers la page Web

InfoPath 2007 contient un nouvel adaptateur de données pour envoyer les données XML générées par le formulaire vers l'environnement d'hébergement, à savoir la page Web personnalisée dans le cas présent. Ce nouvel adaptateur, appelé SubmitToHostAdapter, comporte l'entrée manifest.xsf correspondante :

<xsf:submitToHostAdapter name="Submit" submitAllowed="yes"></xsf:submitToHostAdapter>

Pour configurer un nouvel adaptateur SubmitToHostAdapter

  • Ouvrez un modèle de formulaire InfoPath en mode conception.

  • Dans le menu Outils, cliquez sur Connexions de données.

  • Cliquez sur le bouton Ajouter.

  • Dans l'Assistant Connexion de données, sélectionnez Créer une nouvelle connexion à et Envoyer les données, puis cliquez sur Suivant.

  • Sélectionnez Vers l'environnement d'hébergement, tel qu'une page ASP.NET ou une application d'hébergement, comme illustré figure 5, puis cliquez sur Suivant.

Envoi des données à l'hôte
Figure 5. Envoi des données à l'hôte

  • Tapez un nom pour la nouvelle connexion de données et cliquez sur Terminer.

Une fois que vous avez créé le nouvel adaptateur d'envoi, autorisez le formulaire à envoyer ses données XML à l'environnement d'hébergement, en procédant de la façon suivante :

  • Dans le menu Outils, cliquez sur Options d'envoi.

  • Sélectionnez Autoriser les utilisateurs à envoyer ce formulaire.

  • Sélectionnez Environnement d'hébergement dans la première liste déroulante, puis sélectionnez le nom attribué à SubmitToHostAdapter dans la deuxième liste déroulante. Il doit se présenter comme dans la figure 6.

Figure 6. Sélection d'une connexion de données

  • Cliquez sur OK.

  • Republiez le modèle de formulaire vers la même bibliothèque de formulaires sur le serveur SharePoint, ou créez une nouvelle bibliothèque de formulaires.

Une fois que vous avez republié le modèle de formulaire, vous devez définir un gestionnaire d'événements dans votre page Web personnalisée. Pour ce faire :

  • Passez à la vue Source de votre page Web et localisez la balise du contrôle XmlFormView1. Elle doit se présenter comme suit :
<cc1:XmlFormView ID="XmlFormView1" runat="server" Height="250px" Width="100%" 
    XsnLocation="http://ServerName/FormLibrary/Forms/template.xsn">

NomServeur et BibliothèqueFormulaires correspondent au nom de votre serveur exécutant InfoPath Forms Services et de votre bibliothèque de formulaires.

  • Déclarez le nom du gestionnaire d'événements OnSubmitToHost dans la balise de contrôle XmlFormView :
<cc1:XmlFormView ID="XmlFormView1" runat="server" Height="250px" Width="100%"
XsnLocation="http://ServerName/FormLibrary/Forms/template.xsn"  
OnInitialize="_xmlFormView1_OnInitialize"
OnSubmitToHost="_xmlFormView1_OnSubmitToHost" />
  • Cliquez avec le bouton droit de la souris dans la fenêtre Source de la page Web, puis cliquez sur Afficher le code. La fenêtre code-behind s'ouvre. Dans cette fenêtre, ajoutez le code OnSubmitToHost :
protected void _xmlFormView1_OnSubmitToHost(object sender, EventArgs e)
{
    XPathNavigator xNavMain = XmlFormView1.XmlForm.MainDataSource.CreateNavigator();
    XmlNamespaceManager xNameSpace = new XmlNamespaceManager(new NameTable());
    xNameSpace.AddNamespace
    ("my", "http://schemas.microsoft.com/office/infopath/2003/myXSD/2006-04-20T16:26:21");
    XPathNavigator fTextBox1 = xNavMain.SelectSingleNode("my:myFields/my:field2", xNameSpace);
    TextBox1.Text = fTextBox1.Value.ToString();
}

Remplacez l'espace de noms XML correct par celui du formulaire que vous chargez, puis remplacez la valeur XPath du champ de l'exemple, my:field2, par la valeur XPath du champ de votre formulaire que vous souhaitez alimenter avec la valeur de la zone de texte de la page Web.

Une fois le formulaire envoyé, TextBox1 contient la valeur de my:field2.

Une méthode alternative pour envoyer une valeur du formulaire vers la page Web consiste à utiliser le gestionnaire d'événements OnNotifyHost, déclenché par la méthode NotifyHost dans le code du formulaire, plutôt que le gestionnaire d'événements OnSubmitToHost, lequel est déclenché par l'envoi du formulaire. Notez que l'utilisation du gestionnaire d'événements OnNotifyHost signifie que les données XML ne sont pas validées avant que les données du formulaire ne soient mises à la disposition de la page Web.

Déploiement de pages Web personnalisées sur des sites SharePoint non racine

Lorsque vous créez une page Web personnalisée comme décrit précédemment, la page .aspx peut appartenir uniquement à l'ensemble de sites racine du serveur SharePoint. Pour créer une page sous un ensemble de sites non racine, la page Web personnalisée doit être déployée en tant que fonctionnalité SharePoint. Une fonctionnalité SharePoint nécessite deux fichiers XML simples et est déployée avec l'outil de ligne de commande stsadm.exe, lequel peut être automatisé avec un fichier batch :

  • Créez un dossier sous le dossier Fonctionnalités de votre serveur, généralement sous C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\FEATURES.

  • Ajoutez votre page .aspx personnalisée à ce dossier.

  • Créez les fichiers Feature.xml et Module.xml sur la base des exemples illustrés ci-après, puis ajoutez-les au même emplacement.

  • Déployez la fonctionnalité sur SharePoint. La syntaxe de la ligne de commande permettant de déployer une fonctionnalité est la suivante :

C:\Program Files\Common Files\Microsoft Shared\Web Server
Extensions\12\bin\stsadm -o installfeature –filename
FeatureFolderName\Feature.xml )
  • Activez la fonctionnalité sur un ensemble de sites SharePoint. La syntaxe de la ligne de commande permettant d'activer une fonctionnalité est la suivante :
C:\Program Files\Common Files\Microsoft Shared\Web Server
Extensions\12\bin\stsadm -o activatefeature –filename
FeatureFolderName\Feature.xml -url http://ServerName/Sitecollection)

Remplacez NomServeur et EnsembleSites par les noms réels de votre serveur SharePoint et de l'ensemble de sites sur lequel la fonctionnalité sera activée.

Exemple de fichier Feature.xml

<?xml version="1.0"?>
<Feature Id="8C4DD0CB-5A94-44da-9B7F-E9ED49C2B2DC" Title="Custom Web page"
Description="This simple example feature adds an aspx page with a hosted
XmlFormView control" Version="1.0.0.0" Scope="Web"
xmlns="http://schemas.microsoft.com/sharepoint/">
<ElementManifests>
    <ElementManifest Location="Module.xml"/>
</ElementManifests>
</Feature>

Exemple de fichier Module.xml

<?xml version="1.0"?>
<elements>
    <module name="file" url="" path="">
        <file url="XmlFormViewPage.aspx" type="ghostable"> </file>
    </module>
</elements>

Remplacez la valeur file url par le nom de votre page .aspx, puis exécutez les lignes de commande des étapes 4 et 5 de cette section. Vous pouvez créer un fichier batch et exécuter ces lignes de commande de manière séquentielle.

Considérations relatives à l'utilisation du contrôle XmlFormView

Plusieurs éléments sont à prendre en considération lors de l'utilisation du contrôle XmlFormView dans une page Web personnalisée. Tout d'abord, un seul contrôle XmlFormView peut être ajouté par formulaire Web (page .aspx). Ensuite, pour des raisons de sécurité, les propriétés XsnLocation et XmlLocation du contrôle XmlFormView doivent correspondre au même ensemble de sites que la page personnalisée. Dans le cas de l'exemple de page personnalisée créée avec la procédure précédente, il s'agit de l'ensemble de sites racine du serveur SharePoint. Enfin, InfoPath Forms Services, via Office SharePoint Server 2007 ou Office Forms Server 2007, est requis pour afficher le formulaire dans le contrôle XmlFormView.

Conclusion

Vous pouvez utiliser le contrôle XmlFormView pour fournir des formulaires InfoPath interactifs aux utilisateurs d'une page Web personnalisée, sans qu'il soit nécessaire d'installer le client InfoPath 2007 sur l'ordinateur de l'utilisateur. Le contrôle est présent sur les serveurs qui exécutent InfoPath Forms Services, et diverses propriétés du contrôle permettent une intégration transparente des formulaires InfoPath dans une infrastructure Web existante.

Ressources supplémentaires

Pour plus d'informations sur le développement avec InfoPath, consultez le Portail développeur InfoPath dans le Centre développeur Microsoft Office.