[VB .NET] Récupérer le header text d'une datagridview

Beetlejuice1988 Messages postés 13 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 13 décembre 2007 - 2 mars 2007 à 10:20
blq Messages postés 97 Date d'inscription vendredi 22 octobre 1999 Statut Membre Dernière intervention 13 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.

Merci de votre aide,

3 réponses

blq Messages postés 97 Date d'inscription vendredi 22 octobre 1999 Statut Membre Dernière intervention 13 juin 2016 1
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.


www.blq-software.com
1
bdl20042000 Messages postés 63 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 19 mai 2009
19 mai 2009 à 13:30
bonjour,
chez moi je remplis manuellement l'entête de colonne d'un dgv par :
DataGridView1.Columns(i).HeaderText = "nom" ou i comment par 0.
0
cs_tba Messages postés 1 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 13 octobre 2010
13 oct. 2010 à 12:20
Facile,
tu fais
MaDatagridView.Columns(MaDatagridView.CurrentCell.ColumnIndex).HeaderText
0
Rejoignez-nous