Portée d'une variable

Résolu
equinoxe83 Messages postés 240 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 18 février 2011 - 5 août 2007 à 10:27
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013 - 6 août 2007 à 11:46
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

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
6 août 2007 à 09:48
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
3
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
6 août 2007 à 11:46
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
3
equinoxe83 Messages postés 240 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 18 février 2011
6 août 2007 à 10:04
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.
0
Rejoignez-nous