Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

DateGridView - Double affichage des colonnes ??

4 réponses
Avatar
Paraglider
Bonjour tout le monde,

J'utilise un datagridview qui est alimenter par le code :
'cr=E9er adaptateur
Dim data_Adapter As New OleDbDataAdapter("Select * FROM
MA_TABLE", ObjetConnection)

'Mapper la table clients
data_Adapter.TableMappings.Add("Table", "MA_TABLE")

'remplir le dataset
utilisateur_DataSet =3D New DataSet
data_Adapter.Fill(utilisateur_DataSet)

'lier le contr=F4le =E0 la table
Me.DataUtilisateurs.DataSource =3D utilisateur_DataSet
Me.DataUtilisateurs.DataMember =3D "MA_TABLE"

De ce c=F4t=E9 aucun probl=E8me. Par contre, j'ai utilis=E9 la propri=E9t=
=E9
Columns(Collection) pour donner une nom de colonne "lisible". Le
probl=E8me est que le datagrid affiche mes colonnes vides plus les
colonnes de la table avec comme ent=EAte de colonne le nom du champ !
Comment dois-je faire pour afficher mes donn=E9es avec un ent=EAte de
colonne que je d=E9fini moi-m=EAme ??


Merci de vos r=E9ponses

Jacques

4 réponses

Avatar
Jérémy Jeanson
Bonjour Jacques,

En fait ton code approche semble présenter deux erreurs courante :

1) Tu as laissé la propriété AutoGenerateColumns sur sa valeur par
défaut qui est True . Donc tu as tes colonnes + celles qui sont
générés automatiquement.
Il faut passer donc ajouter la ligne suivante à ton code
Me.DataUtilisateurs.AutoGenerateColumns = False

2) Tu t'es certainement trompé de propriété en créant tes colonnes
(inversion entre la valeur à binder et le titre de la colonne?)

Si tu ne veux pas changer l'ordre de tes colonnes, tu peux très bien
laiser AutoGenerateColumns sur true et parcouri la collection de
colonens autogénérées pour ne changer que leur entête...

à toi de voir ce qui te conviens.

---
Jérémy JEANSON
MCP
http://blogs.codes-sources.com/jeremyjeanson/
Avatar
Paraglider
On 18 fév, 02:28, Jérémy Jeanson wrote:
Bonjour Jacques,

En fait ton code approche semble présenter deux erreurs courante :

1) Tu as laissé la propriété AutoGenerateColumns sur sa valeur par
défaut qui est True . Donc tu as tes colonnes + celles qui sont
générés automatiquement.
Il faut passer donc ajouter la ligne suivante à ton code
 Me.DataUtilisateurs.AutoGenerateColumns = False

2) Tu t'es certainement trompé de propriété en créant tes colonne s
(inversion entre la valeur à binder et le titre de la colonne?)

Si tu ne veux pas changer l'ordre de tes colonnes, tu peux très bien
laiser AutoGenerateColumns  sur true et parcouri la collection de
colonens autogénérées pour ne changer que leur entête...

à toi de voir ce qui te conviens.

---
Jérémy JEANSON
MCPhttp://blogs.codes-sources.com/jeremyjeanson/



Bonjour Jerémy


J'ai essayé Me.DataUtilisateurs.AutoGenerateColumns = False et
effectivement dans ce cas il n'y a que mes colonnes qui apparaissent
mais pas les valeurs !?


Jacques
Avatar
Jérémy Jeanson
Bonjours Jacques,

Peux tu nous indiquer le code utilisé pour créer tes colonnes?

---
Jérémy JEANSON
MCP
http://blogs.codes-sources.com/jeremyjeanson/
Avatar
Paraglider
On 18 fév, 09:22, Jérémy Jeanson wrote:
Bonjours Jacques,

Peux tu nous indiquer le code utilisé pour créer tes colonnes?

---
Jérémy JEANSON
MCPhttp://blogs.codes-sources.com/jeremyjeanson/



Hello Jérémy,

Je n'ai pas de code qui crée les colonnes :-)
J'ai résolu le problème autrement ... je ne sais pas si c'est une
bonne façcon de faire ! Dans mon Selec j'ai défini le nom des champ NM
as Nom ,etc.
J'ai donc un affichage correcte du libéllé des colonnes. Voici le code
complet :
'créer adaptateur
Dim data_Adapter As New OleDbDataAdapter("Select ID_PERS, NM
as Nom, PRM as [Prénom], NIVEAU as Niveau FROM tbl_PERS",
ObjetConnection)

'Mapper la table clients
data_Adapter.TableMappings.Add("Table", "tbl_Pass")

'remplir le dataset
utilisateur_DataSet = New DataSet
data_Adapter.Fill(utilisateur_DataSet)

'lier et 'configurer le datagridview
With Me.DataUtilisateurs
Me.DataUtilisateurs.AutoGenerateColumns = True

Me.DataUtilisateurs.DataSource = utilisateur_DataSet
Me.DataUtilisateurs.DataMember = "tbl_Pass"


For columnIndex As Integer = 0 To (.ColumnCount - 1)
If columnIndex = 0 Then
.Columns(columnIndex).Visible = False 'colonne
contenant l'index
Else
.Columns(columnIndex).AutoSizeMode =
DataGridViewAutoSizeColumnMode.Fill
End If

Next

End With

Si tu as des remarques sur mon code, n'hésite pas !! :-)

Merci

Jacques