Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

[MOSS & InfoPath 2007] Retour d'expérience

Si on regarde dans un moteur de recherche on remarque qu'il y a déjà plusieurs ressources en ligne sur comment publier un formulaire InfoPath sous MOSS avec du code-behind ou comment l'incorporer dans un portail SharePoint. Cependant, ça se complique sur d'autres domaines qui ne sont pas forcement inhérent à MOSS.

 

 

 

Le code behind

Pour utiliser le code-behind vous allez avoir besoin des VSTA (Visual Studio Tools for Application) qui s'installe avec la suite office. Il s'agit en fait d'un Visual Studio un peu modifié avec des options en moins, mais pas d'inquiètudes nous sommes toujours en .NET.

Pour y accéder : Tools > Programming > MS VSTA ou Alt+Shift+F12

N'oubliez pas de référencer la dll : Microsoft.Office.Infopath

Méthodes de bases

  • InternalStartup : méthode qui référence les event handler associé aux contrôles InfoPath, cette partie est géré par InfoPath et il ne faut surtout pas mettre de code dans cette partie.
  • FormEvents_Loading : ici nous allons pouvoir mettre du code custom au lancement du formulaire
  • FormEvents_ViewSwitched : c'est l'évènement déclenché lors d'un changement du vue sur le formulaire.  Vous pouvez accéder aux informations sur la vue via la syntaxe suivante :
   1: this.CurrentView.ViewInfo

Passage de paramètres

Lorsque vous souhaitez envoyer des informations provenant de MOSS vers votre formulaire infopath, vous pouvez le faire via une variable de session.

Vous pourrez ainsi dans le formulaire récupérer sa valeur via le contexte HTTP, attention, cependant, lors du débug sur votre machine en locale, vous aurez des exceptions du fait que vous n'avez pas de contexte HTTP au lancement avec VSTA.

   1: HttpContext.Current.Session["mySession"]

Appel de services WCF

Plusieurs choses sont à prendre en compte lorsque vous voulez utiliser un service WCF via votre formulaire :

  1. Vous ne pourrez pas directement binder un service WCF à un DataSource, il va falloir passer par le code
  2. Lorsque vous testerez vos appels vous allez devoir créer un fichier de configuration, faites en un dans le répertoire C:\Program Files\Microsoft Office\Office12 en le nommant infopath.exe.config
  3. N'utilisez pas de "localhost" dans votre fichier de configuration, utiliser l'IP ou le nom de la machine
  4. Utiliser le BasicHttpBinding

Debug

Si vous voulez débugguer votre formulaire lorsqu'il est hosté par MOSS vous allez vite vous rendre compte que certaines options manque à l'appel avec VSTA dont le "Attach to process"...

Pas de panique, il vous suffit de lancer Visual Studio et d'ouvrir votre solution associé à votre formulaire !

Redirection à la fermeture

Lorsque vous ouvrez un formulaire infopath dans MOSS vous avez un certains nombres de paramètres dans l'URL dont notamment le Source.

Ainsi si vous hosté votre formulaire dans une iframe (via une webpart de contenu) et que vous vouliez redirigé l'utilisateur vers une certaine page à la fermeture de votre formulaire il vous suffit de renseigner le paramètre Source.

Hosting dans une webpart

Avec les Form Services on peut directement ouvrir un formulaire en mode web depuis MOSS. Cependant, celui-ci s'ouvre en plein écran et on perds le contexte graphique dans lequel évolue l'utilisateur. C'est pour cela que la solution de l'iframe  qui pointe vers notre fichier .xsn est envisageable.

Mais, une solution plus propre qu'utiliser une iframe pour hoster un formulaire InfoPath consiste à développer une webpart qui va contenir le formulaire.

Pour cela vous pouvez utiliser l'objet XmlFormView qui vous permettra de le faire en spécifier simplement la propriété xsnLocation.

Vous aurez des infos sur l'XmlFormView à l'adresse suivante : http://msdn2.microsoft.com/en-us/library/microsoft.office.infopath.server.controls.xmlformview.aspx 

Communiquer avec l'hôte

Une fois votre formulaire hoster dans votre WebPart vous pourriez avoir besoin d'envoyer des informations de votre formulaire à votre WebPart pour informer par exemple d'un changement de vue.

C'est un mécanisme très simple qui nous ai proposé :

  • dans le formulaire nous allons utiliser le mécanisme suivant :
   1: XPathNavigator myNav = this.MainDataSource.CreateNavigator();
   2:     this.NotifyHost(myNav.SelectSingleNode("/my:myFields/my:field2", this.NamespaceManager).ToString());

  • et dans notre webpart nous allons rajouter ce morceau de code :
   1: using Microsoft.Office.InfoPath.Server.Controls
   2: protected void XmlFormView1_NotifyHost(object sender, NotifyHostEventArgs e)
   3: {
   4:     TextBox1.Text = e.Notification.ToString();
   5: }

Ainsi il nous suffit de passer en paramètre une chaîne de caractères à l'hôte du formulaire et d'insérer le traitement qui va bien dans ce dernier.

 

Voila pour les quelques astuces qu'on à pu retirer de notre expérience avec InfoPath sous MOSS. J'espère que ses quelques informations vont pouvoir vous aider. N'hésiter pas à nous renvoyer vos commentaires si vous avez d'autres conseils utiles.

alex.

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Publié mardi 19 février 2008 11:11 par khamlon
Classé sous : ,

Commentaires

Pas de commentaires
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Microsoft annonce le nom commercial de Windows 7 par Code is poetry le il y a 3 heures et 47 minutes

- [Silverlight] Téléchargez la version finale (et les outils associés) dès maintenant ! par Thomas Lebrun le il y a 5 heures et 16 minutes

- Vilain bug avec IQueryable et la syntaxe yield : System.BadImageFormatException "An attempt was made to load a program with an incorrect format. (Exce... par Matthieu MEZIL le il y a 8 heures et 6 minutes

- SQL Server 2008 : Un livre en cours de préparation ! par SQL Server vu par Christian Robert le il y a 16 heures et 58 minutes

- IIS7 : à quel pool d'application correspond le processus w3wp.exe par Atteint de JavaScriptite Aiguë [Cyril Durand] le il y a 17 heures et 54 minutes

- PDC 2008 - J-14 ! par Nix's Blog le il y a 19 heures et 40 minutes

- [Silverlight] La version finale de Silverlight 2 sera disponible en téléchargement demain ! par Thomas Lebrun le il y a 21 heures et 33 minutes

- SharePoint 2007 : Professional Developers Conference 2008 par Philippe Sentenac [MVP SharePoint] le 10-13-2008, 12:28

- [Silverlight] En attendant Silverlight 2 RTW par Blog Technique d'Audrey PETIT le 10-11-2008, 21:55

- Le nouveau Gojira, c’est pour lundi… par CoqBlog le 10-11-2008, 01:18