thonyboy
Messages postés165Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention16 février 2011
-
12 sept. 2008 à 11:58
thonyboy
Messages postés165Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention16 février 2011
-
13 sept. 2008 à 07:08
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()
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 12 sept. 2008 à 21:20
"Mais que veux tu dire par plusiers instances de ma classe defaut 4"
Par exemple, Windows.Forms.Button est une classe
Dim Obj As New Windows.Forms.Button
Obj est une instance de Button. Autrement dit, à chaque fois que tu appels le constructeur (New) tu initialises une nouvelle instance. Si tu as plusieurs boutons sur un formulaire, tu as donc plusieurs instance de la classe Button. Même chose pour ta classe default4.
Elle représente quoi ta classe default4? Ta plage principale je suppose? Et lorsque tu clique sur un élément de ta liste, la page est rechargé pour afficher le changement non? Et donc ta Table3
est recréée
Pour le projet entier, je sais pas trop, je ne fais pas d'ASP ni de base de donnée...
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 12 sept. 2008 à 19:32
Salut,
Dans ce code, Public Table3
AsNew DataTable
est appelé à chaque fois que tu initialise une instance de ta classe Default4
Dans une méthode, seul Dim est autorisé. Une variable locale déclaré avec Dim n'est accessible que dans le bloc de déclaration. C'est à dire que si elle est déclaré dans un If.. End If, elle ne sera pas accessible hors du If... End If
Hors d'une méthode, on peut déclarer:
Private (= Dim): Accessible seulement dans la classe
Friend : Accessible dans le projet
Public : Accessible hors du projet (les classes publiques d'une DLL par exemple)
Si tu veux que plusieurs instances de ta classe Default4
utilisent une même variable (par ex Table3
), déclare la Shared. Shared sert à déclarer une méthode/variable statique, une seule de ces variable sera créé, même un programme hors de ton projet utilisera le même objet statique. Shared peut être combiné avec Private, Friend ou Public.
thonyboy
Messages postés165Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention16 février 2011 12 sept. 2008 à 20:41
Bonsoir Kevin.
Déjà merci pour ta réponse qui m'éclaire un peu plus.
Mais que veux tu dire par plusiers instances de ma classe defaut 4
Mon idée est simple sur mon serveur IIS j'ai cette petite appli qui affiche un DataGrid avec des données. Les utilisateurs peuvent cliquer sur une ligne de ce datagrid, en dessous d'affiche l'enregistrement complet qu'ils peuvent modifier.
(Le data grid est une table en mémoire chargée a partir d'un fichier Csv)
Voila rien de bien compliqué... A lors quellle est la philosophie pour déclarée cette table et ce dataset ?
D'avance, encore merci
Vous n’avez pas trouvé la réponse que vous recherchez ?