Portée d'une variable

Résolu
Signaler
Messages postés
240
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
18 février 2011
-
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
-
Bonjour,
Pas trop de succès avec ma demande précédente, donc je la reformule de manière plus explicite.
Je souhaite savoir comment gérer la portée d'une variable dans une page VB.
Jusqu'à présent j'utiliser des textbox dans la page asp que je cache mais ça fait un peu bricolage, non ?
Bref, j'ai 5 formviews non visible qui peuvent devenir visible si j'appuie sur des boutons.
 J'ai une variable qui s'incrémente au fur et à mesure que j'appuie sur les boutons (à noter que les boutons sont à l'intérieur des formview. Dans le formview1, j'ai un bouton qui permet d'afficher le formview2, ect ...).
J'ai déclaré ma variable en haut de page .vb (var as int16 = 1).
Lorsque je déclenche l'évènement clic d'un des boutons, j'icrémente de 1 var (var += 1).
En debug, var s'incrémente bien à 2.
Le Pb c'est que lors du postback de l'évènement clic (ou d'un autre, d'ailleurs), var est réinitialisé à 1.
J'ai donc tenté d'initialiser var dans Protected
Sub Page_Load
, avec la condition "If page.IsPostBack = False " mais là, nouveau Pb, var n'est plus reconnu dans les évènements clic boutons (qui sont, je le rapelle dans des formview ... mais ça n'a paut-être pas d'incidence ...).
Si quelqu'un peut m'aider sur ce Pb, il est le bienvenu !!
Merci.

  

3 réponses

Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Salut,

Pour conserver la valeur d'une variable entre deux postback, tu peux tout simplement utiliser les variables de session.
Exemple (C#) :
Session["Compteur"] = 0;

Pour recuperer la valeur :
int iVal = Convert.ToInt32(Session["Compteur"].ToString());

Shell
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Je ne pense que la portée soit un problème sachant que cette variable n'est accessible et utilisable, que du coté serveur.
Tu en as donc la maitrise complete, tu peux la supprimer et la recréer autant de fois que tu veux.

Sa durée de vie est en effet celle de la session IE (ou firefox ou .....).
La Page_Load convient tout à fait pour initialiser cette variable.

Pour ce qui est du PostBack, tu peux l'omettre, car la variable de session est indépendante de tes pages.
Comme son nom l'indique elle est rattachée à la session et non pas aux pages.

Shell
Messages postés
240
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
18 février 2011

Salut deathCrach !
D'après ce que je lis, la variable session s'étend à toutes les pages. C'est pas un peu trop étendu, comme portée ? Celà dit, c'est pas vraiment gènant vu que je ne l'utilise que dans une page.
Apparemment, je peux la déclarer n'importe où. Je peux donc le faire dans le page_load (condition if Page.IsNotPostBack) ?
Autre question : Quelle est sa durée de vie (la session en cours, j'imagine)? Pas de risque de la voir 'trainer' sur le serveur ??

Merci de ton aide.