Salut à tous

Ce n'est pas une question mais une solution possible que je propose ici.
En effet je programme sous Visual Basic 2008 Express et j'ai recherché un peu partout comment remplir un DataGridView dynamiquement (comprendre avec le résultat d'une requête) quand on ajoute à celui-ci une CheckBox. Autant dire que les solutions ne sont pas légion.
Donc je participe comme je peux à la grande matrice

Je considère évidement que votre projet et votre form sont déjà créés, sinon le site à de très bon tuto dessus !

Il faut avant toute chose créer son dataGridView en mode Design, remplir tous les paramètres souhaités dans les Propriétés.
Vient ensuite le moment ou il faut créer la colonne checkBox. Pour cela, il faut aller dans la propriété Columns de votre DataGridView, Ajouter une colonne de type "DataGridViewCheckboxColumn", puis remplir tous les paramètres pour votre colonne (pensez à mettre la propriété "Width" et "MinimumWidth" à 30 sinon la checkBox ne s'affichera pas car la colonne ne sera pas assez large.

Une fois cela fait, passons à la partie code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
'Create query
MyQuery = "select nom_de_ma_colonne_1, nom_de_ma_colonne_2 FROM ma_table WHERE ma_condition;"

'Create Connection
MyConnection = New MySqlConnection("Server=localhost; Database=ma_base; User ID=root; Password=; Connect Timeout = 120")

'Open connection
MyConnection.Open()

'Execute query
MyCommand = New MySqlCommand(MyQuery, MyConnection)
MyDataReader = MyCommand.ExecuteReader

'Number of colums in the DataGridView witch is the number of field + one for the CheckBox
MyDataGridView.ColumnCount = (MyDataReader.FieldCount + 1)

'DataGridView style
With MyDataGridView.ColumnHeadersDefaultCellStyle
    .BackColor = Color.Navy
    .ForeColor = Color.White
    .Font = New Font(MyDataGridView.Font, FontStyle.Bold)
End With

'Define columns
With MyDataGridView
     'Columns(0) is the column with the checkbox, it's define in the [Desing] windows (collection) 
     'Define Column 1
     .Columns(1).Name = "nom_de_ma_colonne_1"
     .Columns(1).HeaderText = "nom_de_l_entete_de_ma_colonne_1"  'Can be different from the name
     'Define Column 2
     .Columns(2).Name = "nom_de_ma_colonne_2"
     .Columns(2).HeaderText = "nom_de_l_entete_de_ma_colonne_2"  'Can be different from the name
End With

'Declare the line and the differents cels
Dim line As DataGridViewRow
Dim celCkdBox As New DataGridViewCheckBoxCell     'Cell for the CheckBox
Dim celData As New DataGridViewTextBoxCell      'Cell for data

'Reading records
While MyDataReader.Read

    'Initialize the line and the cell for the CheckBox
    line = New DataGridViewRow
    celCkdBox = New DataGridViewCheckBoxCell

    'Give value to cell of the CheckBox
    celCkdBox.Value = False     'Means that CheckBox is not Checked

     'Add the cell to the line
     line.Cells.Add(celCkdBox)

     'Reading records in MyDataReader 
     For i As Integer = 0 To MyDataReader.FieldCount - 1

          'Initialize the cell for data
          celData = New DataGridViewTextBoxCell

          'Test to know if data are NULL or empty, test MUST be on the value 
          If Not MyDataReader.GetValue(i) Is Nothing AndAlso Not (MyDataReader.GetValue(i) Is DBNull.Value) Then
               'Give value to cell of data
               celData.Value = MyDataReader.GetString(i)
           End If

           'Add the cell with data to the line
           line.Cells.Add(celData)
      Next i

     'Add the line in the DataGridView
     MyDataGridView.Rows.Add(line)

End While
'End of Records

'Close reader
MyDataReader.Close()

'Close connection
MyConnection.Close()
Comme je l'ai dis, c'est UNE solution pour remplir dynamiquement un DataGridView avec une CheckBox, il en existe très certainement d'autre ! Donc pour les futurs "mais c'est pas comme ça" ou autre passez votre chemin, d'avance merci !

Pour ceux que le script intéresse, n'hésitez pas à l'améliorer et à nous faire part de vos améliorations. Ou à poser des questions qui permettrai de l'améliorer.

@++