Portée des variables [Résolu]

Signaler
Messages postés
165
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
16 février 2011
-
Messages postés
165
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
16 février 2011
-
Bonjour

J'ai un peu de mal avec la portée des variables et j'aimerais que l'on m'éclaire un peu

Je fais un ptit prog qui charge une base Nom + Prenom et qui l'affiche dans un DataGrid.
Comme j'ai besoin d'accéder a ma table depuis plusieurs procédures, je l'ai déclaré en dehors des procédures.
J'ai cru comprendre que c'est comme ca qu'il fallait faire.... (voir bout de code ci dessous)

Ce qui me choque c'est que si je met un point d'arret en debug sur la ligne de déclaration de la table par exemple  (Public Table3 AsNew DataTable)
je constate que chaque fois que je clique sur une ligne de ma datagrid, je passe par ce point d'arret !!!! et franchement je ne comprend pas la raison.

Du coup je me dit que a chaque fois que je clique sur un enregistrement je redéclare ce qui est déjà déjà déclaré ?

Bref j'aimerais bien comprendre, ou alors ce n'est pas comme cela que j'aurais du faire ?

D'avance merci

Partial

Class Default4

Inherits System.Web.UI.Page

Public Data3
As
New DataSet()

Public Table3
As
New DataTable

Dim Nom
As
New DataColumn(
"Nom",
GetType(System.String))
Dim Prenom
As
New DataColumn(
"Prénom",
GetType(System.String))

Protected
Sub ListeUtilisateurs() 'Procédure qui rempli ma table
  
If Data3.Tables.Count > 0
Then
      Data3.Tables(0).Clear()

  Else
 Table3.Columns.Add(Nom)
 Table3.Columns.Add(Prénom)

 Data3.Tables.Add(Table3)

End
If
 'Etc Etc Etc ensuiste je le met l'affiche sur un data grid
'
End Sub
 

4 réponses

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Un singleton par exemple.

Ce n'est pas propre de mettre des variables publiques
en publiques tu ne devrais avoir que des propriétés.

Tes variables devraient être locales.

NB Dim --> variable private (et ne devrait être employé que dans les déclarations locales)
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Salut,

Alors le probleme est simple.
A chaque fois que tu cliques sur une ligne il y a reformation (un nouveau rendu) de la page
et renvoyé au client (navigateur web) c'est un postback

Et comme ta variable est globale à la page.
Elle est réinitialisée, car la classe est réinstanciée.
Messages postés
165
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
16 février 2011

Merci nhervagault.

Mais alors que faut  t'il faire pour eviter cela et avoir des  variables avec une portée sur toute mon aplli ?
Messages postés
165
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
16 février 2011

Merci je vais approfondir tout ca.