Remplir un DataTable avec une collection (Dictionnaire)
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:
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.