Bonjour,

Alors sur un autre post, j'essaye de réaliser un filtre sur un DGV en passant par un BlindingSource via une DataTable qui serai rempli par une collection.

Mon filtre marche très bien mais mon souci est au niveau du remplissage de ma DataTable, j'arrive pas a prendre tous les éléments de ma collection pour les mettre dans ma DataTable.

Voila mon code de mon Form:

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
81
82
83
84
85
86
87
88
Public Class frmDGV
    Private ContextMenuStrip1 As ContextMenuStrip
    Private ContextMenuStrip2 As ContextMenuStrip
 
    Private Sub frmDGV_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        RemplirDico()
        TableForDgv()
    End Sub
    Public dtFromGrid As New DataTable()
    Public bs As New BindingSource
 
    Private Sub RemplirDico()
        Dim Alarme1 As New Alarme
        Alarme1.TimeDate = Now.DayOfYear
        Alarme1.TimeDate = Now.Hour
        Alarme1.Degre = "Auto"
        Alarme1.Evenement = "1"
        DicoTest.Add(Alarme1.Evenement, Alarme1)
 
        Dim Alarme2 As New Alarme
        Alarme2.TimeDate = Now.DayOfYear
        Alarme2.TimeDate = Now.Hour
        Alarme2.Degre = "Auto"
        Alarme2.Evenement = "2"
        DicoTest.Add(Alarme2.Evenement, Alarme2)
 
        Dim Alarme3 As New Alarme
        Alarme3.TimeDate = Now.DayOfYear
        Alarme3.TimeDate = Now.Hour
        Alarme3.Degre = "Manu"
        Alarme3.Evenement = "3"
        DicoTest.Add(Alarme3.Evenement, Alarme3)
 
        Dim Alarme4 As New Alarme
        Alarme4.TimeDate = Now.DayOfYear
        Alarme4.TimeDate = Now.Hour
        Alarme4.Degre = "Manu"
        Alarme4.Evenement = "4"
        DicoTest.Add(Alarme4.Evenement, Alarme4)
 
        Dim Alarme5 As New Alarme
        Alarme5.TimeDate = Now.DayOfYear
        Alarme5.TimeDate = Now.Hour
        Alarme5.Degre = "Erreur"
        Alarme5.Evenement = "5"
        DicoTest.Add(Alarme5.Evenement, Alarme5)
    End Sub
 
    Private Sub TableForDgv()
 
        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 i As Integer = 0 To DicoTest.Count - 1
            dtFromGrid.Rows.Add(DicoTest.Item(i + 1))
        Next
 
        bs.DataSource = dtFromGrid
        'bs.Filter = "Degre = 'Auto'"
 
        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
End Class
Mon Dico est composé de 5 alarmes qui chacune possède 4 propriétés, le tous est programmé dans mon module et na aucun interé dans ce post.

Sinon mon souci viens de la boucle for au moment ou je veux remplir le DataTable.

Merci d'avance pour vos suggestions.