19 octobre 2009

INFOPATH : FormState

Lors de l'utilisation du code managé dans InfoPath 2007, vous pouvez être amené à déclarer une variable globale afin de simplifier votre code.

Seulement, en infopath, cela nécessite de passer par l'utilisation d'un FormState (sous peine d'avoir un joli message d'erreur à la publication).
Il existe d'ailleurs un exemple prédéfini et commenté dans chaque formcode d'InfoPath.


La syntaxe à suivre est la suivante:
public partial class FormCode
{
       //Variable globales
       private string _strConnectionString
       {
             get {return (string)FormState["_strConnectionString"];}
             set {FormState["_strConnectionString"] = value;}
       }
       ...
}


Cela permet de déclarer le formState grâce à un get,set.
Ensuite , cette variable s'utilise simplement de la manière suivante:
  • Affectation : FormState["_strConnectionString"] = "test";
  • Lecture: string strConnectionString = FormState["_strConnectionString"].ToString();

Avec ceci, les variables globales InfoPath n'ont plus aucun secret pour vous.

1 commentaire:

  1. Salut,
    Personnellement, j'utilise une connexion au web service Crm Dynamics, et ma variable de connexion (class CrmService) n'arrive pas a être sérialiser avec cette méthode.

    private CrmService _crmservice
    {
    get { return (CrmService)FormState["_crmservice"]; }
    set { FormState["_crmservice"] = value; }
    }


    public static void test()
    {
    CrmService crmservice = connexion_updateCRM();
    FormState["_crmservice"] = crmservice;
    }
    J'obtients un message d'erreur 'Erreur de sérialisation'.
    Quelqu'un aurait une idée sur la procédure a adopter ?

    merci

    RépondreSupprimer