14 novembre 2009

INFOPATH : LINQ et section extensible

Habituellement, la construction par le code d’une section extensible (ou tableau extensible) d’InfoPath nécessitait l’utilisation d’un document temporaire que l’on ajoutait ensuite à la source de données. Cette opération s’avérait souvent fastidieuse et n’était pas des plus claires niveau code.

Une nouvelle méthode apparu avec le Framework .Net 3.5 est l’utilisation du LINQ (Language-Integrited Query) qui permet de requêter du XML , du SQL, des objets, de l’ADO.Net.

Pour l’utiliser dans un formulaire InfoPath, il faut faire monter la référence suivante: “System.Xml.Linq”.

Et ensuite le code est le suivant:

XNamespace xmlns = (XNamespace)PERSONNES.GetNamespace("my");
XNamespace xsi = “http://www.w3.org/2001/XMLSchema-instance”;
XElement PERSONNE = new XElement(new XElement(xmlns + "PERSONNE",
                                  new XElement(xmlns + "NOM", strNom),
                                  new XElement(xmlns + "PRENOM", strPrenom),
                                  new XElement(xmlns + "AGE", 
                                                new XAttribute (xsi + "nil", true)),
                                  new XElement(xmlns + "DATE_NAISSANCE", strDateNaissance)));
Puis, il suffit d’ajouter notre élément à notre source de données:
PERSONNES.AppendChild(PERSONNE.CreateNavigator());

Seul bémol, LINQ nécessite le Framework 3.5 installé sur la machine (ou sur le serveur dans le cas d'un formulaire Form Services).

Mots clés Technorati :

Aucun commentaire:

Enregistrer un commentaire