IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Remplir un DataTable avec une collection (Dictionnaire)


Sujet :

VB.NET

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut 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 : 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.

  2. #2
    Membre expérimenté
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Points : 1 454
    Points
    1 454
    Billets dans le blog
    9
    Par défaut
    Tu peux ajouter les valeur de ton dictionnaire dans une liste ensuite
    Datatable.datasource= Liste<XX>();

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    La DataTable na pas de DataSource ^^

    Et meme si c'étais le cas, je vois pas comment ajouter par la suite ma collection dans une liste, j'ai l'impression que c'est interminable lol

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    674
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 674
    Points : 1 176
    Points
    1 176
    Par défaut
    Re,
    voir votre discussion précédente.
    appliquée à votre DataTable, ça devrait donner :
    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
        Private Sub TableFromDictionary()
     
            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)
     
            For Each alar As Alarme In DicoTest.Values
                dtFromGrid.Rows.Add(alar.TimeDate, alar.TimeHeure, alar.Degre, alar.Evenement)
            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

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            For i As Integer = 0 To DicoTest.Count - 1
                dtFromGrid.Rows.Add(DicoTest.Item(i + 1).TimeDate, DicoTest.Item(i + 1).TimeHeure, DicoTest.Item(i + 1).Degre, DicoTest.Item(i + 1).Evenement)
            Next
    [Edit]Il vaut mieux utiliser la proposition de chrismonoye avec le For Each[/Edit]

  6. #6
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    J'ai fait quasi la même chose et sa marche bien mais j'aurai aimé que sa soit automatique, genre j'ai pas a choisir les propriétés de mon alarme car par la suite, le nombre de mes colonnes est dynamique, genre je peux les modifier (Ajouter ou supprimer des colonnes) !!

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Il suffit simplement de les cacher

  8. #8
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    En gros si j'ai bien compris, par exemple j'ai 30 propriétés par alarme, j'affiche toute mes propriétés chacune dans une colonne et ensuite avec ma fenêtre (Organisation des colonnes) qui permet d'ajouter ou supprimer des colonnes, je décide ou pas de cacher les colonnes désirées !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. remplir un datagridview avec une collection
    Par landsraad59 dans le forum C#
    Réponses: 7
    Dernier message: 03/06/2015, 20h14
  2. [Windows Phone 8] Remplir une listwiev avec une collection d'objets
    Par PatStan17 dans le forum Windows Phone
    Réponses: 4
    Dernier message: 10/09/2013, 14h56
  3. Remplir un combobox avec une collection Dictionnary
    Par kodo dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 19/06/2010, 19h21
  4. Lier un DataTable avec une collection typee
    Par osteinme dans le forum C#
    Réponses: 2
    Dernier message: 29/01/2009, 22h33
  5. comment remplir 2 champs avec une seule listbox
    Par Didi17 dans le forum Access
    Réponses: 3
    Dernier message: 19/10/2005, 09h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo