Bonjour,
Alors dans mon programme, j'ai un DGV qui est lié à une dataTable via un BlindingSource classique (sans image). J'ai reussi à réaliser un filtre sans probleme jusqu'au moment ou j'ai une colonne de mon DGV qui est une colonne Image. J'ai trouvé une solution pour ajouter cette colonne image avec les images que je veux mais lorsque je me en marche mon filtre, mes images disparaissent car elles sont pas enregistrer dans ma DataTable.
Voila mon code qui m'ajoute mes images de manière classique :
Je voudrai bien pouvoir mettre directement mes images dans ma DataTable et mon BlindingSource pour que mon filtre marche a 100%.
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 Private Sub frmDGV_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load RemplirDico() TableForDgv() AjouterColonneImage() AjouterImageDansDGV() End Sub Private Sub AjouterColonneImage() Dim ColImg As New DataGridViewImageColumn() DataGridView1.Columns.Insert(0, ColImg) End Sub Private Sub AjouterImageDansDGV() For i As Integer = 0 To DataGridView1.RowCount - 1 If DataGridView1.Rows(i).Cells(3).EditedFormattedValue = "Auto" Then DataGridView1.Rows(i).Cells(0).Value = imgListPrio.Images(0) ElseIf DataGridView1.Rows(i).Cells(3).EditedFormattedValue = "Manu" Then DataGridView1.Rows(i).Cells(0).Value = imgListPrio.Images(1) ElseIf DataGridView1.Rows(i).Cells(3).EditedFormattedValue = "Erreur" Then DataGridView1.Rows(i).Cells(0).Value = imgListPrio.Images(2) End If Next End Sub
Voila le code de ma nouvelle approche :
Propriété Image dans ma classe Alarme dans mon module en plus
Mon Dico est chargé avec les images :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Private msImg As Image Public Property Img() As Image Get Return msImg End Get Set(ByVal value As Image) msImg = value End Set End Property
Ma procédure qui permet de remplir de DataTable, BlindingSource et DGV :
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 Private Sub RemplirDico() Dim Alarme1 As New Alarme Alarme1.TimeDate = Now.DayOfYear Alarme1.TimeDate = Now.Hour Alarme1.Degre = "Auto" Alarme1.Evenement = "1" Alarme1.Img = imgListPrio.Images(0) DicoTest.Add(Alarme1.Evenement, Alarme1) Dim Alarme2 As New Alarme Alarme2.TimeDate = Now.DayOfYear Alarme2.TimeDate = Now.Hour Alarme2.Degre = "Auto" Alarme2.Evenement = "2" Alarme2.Img = imgListPrio.Images(0) DicoTest.Add(Alarme2.Evenement, Alarme2) Dim Alarme3 As New Alarme Alarme3.TimeDate = Now.DayOfYear Alarme3.TimeDate = Now.Hour Alarme3.Degre = "Manu" Alarme3.Evenement = "3" Alarme3.Img = imgListPrio.Images(1) DicoTest.Add(Alarme3.Evenement, Alarme3) Dim Alarme4 As New Alarme Alarme4.TimeDate = Now.DayOfYear Alarme4.TimeDate = Now.Hour Alarme4.Degre = "Manu" Alarme4.Evenement = "4" Alarme4.Img = imgListPrio.Images(1) DicoTest.Add(Alarme4.Evenement, Alarme4) Dim Alarme5 As New Alarme Alarme5.TimeDate = Now.DayOfYear Alarme5.TimeDate = Now.Hour Alarme5.Degre = "Erreur" Alarme5.Evenement = "5" Alarme5.Img = imgListPrio.Images(2) DicoTest.Add(Alarme5.Evenement, Alarme5) End Sub
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 Private Sub TableForDgv() Dim ColImg As DataColumn = New DataColumn() ColImg.ColumnName = "" dtFromGrid.Columns.Add(ColImg) Dim ColDate As DataColumn = New DataColumn() ColDate.ColumnName = "Date" dtFromGrid.Columns.Add(ColDate) Dim ColHeure As DataColumn = New DataColumn() ColHeure.ColumnName = "Heure" dtFromGrid.Columns.Add(ColHeure) Dim ColDegre As DataColumn = New DataColumn() ColDegre.ColumnName = "Degre" dtFromGrid.Columns.Add(ColDegre) Dim ColEven As DataColumn = New DataColumn() ColEven.ColumnName = "Evenement" dtFromGrid.Columns.Add(ColEven) ' Permet d'ajouter les colonnes du DataTable dans les colonnes du DGV For Each col As DataGridViewColumn In DataGridView1.Columns dtFromGrid.Columns.Add(col.Name) Next For Each alar As Alarme In DicoTest.Values dtFromGrid.Rows.Add(alar.Img, alar.TimeDate, alar.TimeHeure, alar.Degre, alar.Evenement) Next bs.DataSource = dtFromGrid With DataGridView1 .RowHeadersVisible = False .DataSource = bs .Columns(0).SortMode = DataGridViewColumnSortMode.NotSortable .Columns(1).SortMode = DataGridViewColumnSortMode.NotSortable .Columns(2).SortMode = DataGridViewColumnSortMode.NotSortable .Columns(3).SortMode = DataGridViewColumnSortMode.NotSortable .SelectionMode = DataGridViewSelectionMode.FullRowSelect .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells End With End Sub
Merci d'avance pour vos suggestions, et j’accepte aussi vos solutions car je trouve la mienne pas trop jolie a voir de loin !!
Partager