Propriétés et ViewState

Propriétés et ViewState - C#/.NET managed - Programmation

Marsh Posté le 11-10-2007 à 10:22:36    

Bonjour,
 
J ai un problème les propriétés dans le designer avec un web server control.  
 
Si je fait :

Code :
  1. Color bgColor = Color.White;
  2.        
  3.         [Category("Appearance" )]
  4.         [Description("The background color" )]
  5.         [DefaultValue(typeof(Color), "0, 0, 0" )]
  6.         public Color BgColor
  7.         {
  8.             get {
  9.                 return bgColor;
  10.             }
  11.             set {
  12.                 bgColor = value;
  13.             }
  14.         }


 
Dans ce cas ok tout se passe bien je peux choisir la couleur dans le Designer. Mais si j'utilise un ViewState comme ceci:

Code :
  1. [Category("Appearance" )]
  2.         [Description("The background color" )]
  3.         [DefaultValue(typeof(Color), "0, 0, 0" )]
  4.         public Color BgColor
  5.         {
  6.             get {
  7.                 return (Color)ViewState["BgColor"];
  8.             }
  9.             set {
  10.                 ViewState["BgColor"] = value;
  11.             }
  12.         }


 
Il ne fonctionne pas et il fait: "Object reference not set to an instance of an object."
 
Pourquoi et comme résoudre se problème???
 
D'avance merci
 
Ben

Reply

Marsh Posté le 11-10-2007 à 10:22:36   

Reply

Marsh Posté le 11-10-2007 à 11:38:03    

Normal, car malgrés le defaultValue, la valeur de viewstate["bgcolor"] reste à null tant que tu ne l'a pas initialisé.
 
Initialise dans le constructeur ça devrait marcher ;)


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
Reply

Marsh Posté le 11-10-2007 à 12:02:13    

Ou plus propre (encore que avec le try-catch, faut voir, mais j'ai la flemme d'ecrire encore un autre if), fait un mixe des deux solutions :

Code :
  1. private color _BgColor = null;
  2. public color BgColor {
  3.    get {
  4.       if ( _BgColor == null ) {
  5.             try { _BgColor = (Color)ViewState["BgColor"]; } catch {_BgColor = new Color(0,0,0);}
  6.       }
  7.       return _BgColor;
  8.    }
  9.    set {
  10.       _BgColor = value;
  11.       ViewState["BgColor"] = value;
  12.    }
  13. }


Message édité par fred777888999 le 11-10-2007 à 12:03:22
Reply

Marsh Posté le 11-10-2007 à 15:42:13    

Ok merci je vais tester ca des que j ai 5 minutes
 
Par contre j ai égalment un problème pour mettre un Control genre une TextBox.  
Je doit utiliser monControl.ClientId mais il est null au moment ou je veut l utiliser donc dans quel évennement du web server control puis je y accéder pour que celui ci soit instancé?


Message édité par the big ben le 11-10-2007 à 15:44:29
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed