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 :
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 !
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()
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.
@++
Partager