[VB .NET] Récupérer le header text d'une datagridview
Beetlejuice1988
Messages postés13Date d'inscriptionmercredi 14 février 2007StatutMembreDernière intervention13 décembre 2007
-
2 mars 2007 à 10:20
blq
Messages postés97Date d'inscriptionvendredi 22 octobre 1999StatutMembreDernière intervention13 juin 2016
-
25 avril 2011 à 10:59
Bonjour,
J'ai créé une datagridView, j'y ai importé le contenu d'un fichier Excel.
Chaque colonne de cette DataGridView est instanciée avec un headername et un headertext.
Je veux parcourir les headers de cette DataGridView à la recherche d'une colonne en fonction de son nom.
Par exemple, il y a une colonne, située je ne sais pas où à l'avance, contenant une liste d'utilisateurs. Le header de cette colonne est : SamAccountName
Je veux retrouver le numéro de la colonne portant comme header le texte "SamAccountName"
Pour le moment, j'imagine qu'il faut utiliser une variable de type DataGridViewHeaderCell ou DataGridViewRowHeaderCell mais je ne vois pas comment l'instancier.
blq
Messages postés97Date d'inscriptionvendredi 22 octobre 1999StatutMembreDernière intervention13 juin 20161 25 avril 2011 à 10:59
Une autre manière de faire est d'initialiser la valeur Name (accès nommé) et non uniquement HeaderText (valeur d'affichage), ainsi, il est plus facilede faire un contrôle avec la fonction Contains() - tester avec VB 2010.
A la création du DataGridView, chaque colonne est associée à un nom interne et un label affiché :
' la référence de la colonne, par défaut c'est effectivement un entier (position)
theColumn.Name = theName
' Ce qui est affiché
theColumn.HeaderText = theHeader
Dans le code, lors d'un accès à une ligne (theRow) du tableau (theDataGV), il est aisé de récupérer la valeur (theValue ) de la cellule correspondant à la colonne (theName), sans avoir à parcourir chaque cellule de la ligne :
If theDataGV.Columns.Contains(theName) = True Then
dim theValue as string = theRow.Cells(theName).Value.ToString
end if
L'appel à la fonction Contains() est juste un test de vérification que la colonne accéder existe bien, sinon l'accès à la valeur (via Cells) risque de provoquer une erreur si la colonne n'existe pas ou que la valeur .Name d'une colonne n'est pas initialisé. Il est donc parfois très utile de désigner les objets des tableaux, par des noms internes différents des labels servant à l'affichage. Cela me semble plus directe que de passer par une valeur de position, éventuellement changeante.