10 mars 2009

Modèle objet : InfoPath 2003 VS Infopath 2007

Pour les habitués du modèle objet infopath 2003 qui sont passés à Infopath 2007, voici un petit mapping entre les modèles de ces 2 versions (ils n'ont plus grand chose à voir):


Modèle objet InfoPath 2003 :
  • thisXDocument.DOM
  • IXMLDOMNode
  • Lecture: field1.text
  • Affectation: field1.text


Modèle objet InfoPath 2007 :
  • this.MainDataSource
  • XPathNavigator
  • Lecture: field1.Value
  • Affectation: field1.SetValue()


Ce petit mapping des objets les plus utilisés est sans prétention.
Pour les développeurs qui voudraient disposer du poster du modèle objet infopath 2007 (incorporant en plus la compatibilité Form services), voici le lien à suivre:



Avec ça, le modèle objet Infopath n'aura plus aucun secret pour vous...

4 mars 2009

INFOPATH : Tableau extensible

Vous pouvez être amené dans le développement Infopath à vouloir insérer des lignes dynamiquement dans une section ou un tableau extensible
Par exemple, l'image suivante nous montre une structure extensible gérée par Infopath:



Il faudra donc insérer un bloc "ExtProduit" à chaque fois que l'on voudra insérer une nouvelle ligne...
Le code à implémenter est le suivant:
XmlDocument doc = new XmlDocument();

XmlNode group = doc.CreateElement("ExtProduit", NamespaceManager.LookupNamespace("my"));

XmlNode field = doc.CreateElement("Code", NamespaceManager.LookupNamespace("my"));

XmlNode node = group.AppendChild(field);

node.InnerText = "Valeur du code";


field = doc.CreateElement("Descriptif", NamespaceManager.LookupNamespace("my"));
node = group.AppendChild(field);

node.InnerText = "Valeur descriptif";

//Ajout du group au document

doc.AppendChild(group);
//Ajout du document à la source de données concernée

MainDataSource.CreateNavigator().SelectSingleNode("//my:RecProduit", NamespaceManager).AppendChild(doc.DocumentElement.CreateNavigator());


Plutôt simple non?
Après à vous de mixer ceci selon les besoins mais le principe de base est le précédent.