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 :

1 commentaire:

  1. Bonjour,
    J'ai un formulaire InfoPath attaché à une liste SharePoint.
    Le formulaire est sous forme d'une section extensible. Mon problème est que je n'arrive pas à appliquer des règles de Mise en forme (exemple: désactivation d'un champs) sur les éléments de cette section. Je créé la règle mais il n'a aucun effet sur les élément concernés ils sont toujours actifs.
    Avez vous une idée sur la source du problème et comment l'éviter?
    Merci infiniment

    RépondreSupprimer