Portée d'une variable [Résolu]

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

  
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
DeAtHCrAsH 2674 Messages postés vendredi 25 janvier 2002Date d'inscription 6 février 2013 Dernière intervention - 6 août 2007 à 09:48
3
Merci
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

Merci DeAtHCrAsH 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de DeAtHCrAsH
Meilleure réponse
DeAtHCrAsH 2674 Messages postés vendredi 25 janvier 2002Date d'inscription 6 février 2013 Dernière intervention - 6 août 2007 à 11:46
3
Merci
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

Merci DeAtHCrAsH 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de DeAtHCrAsH
equinoxe83 240 Messages postés lundi 18 juin 2007Date d'inscription 18 février 2011 Dernière intervention - 6 août 2007 à 10:04
0
Merci
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.
Commenter la réponse de equinoxe83

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.