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).