none
Evénement RowAdded DatagridView RRS feed

  • Question

  • Bonjour à tous,

    il semble que l'événement RowsAdded d'un DatagridView ne se produit à chaque ajout de ligne mais à chaque ajout de "bloc" de lignes.

    Afin, par exemple, de modifier la couleur des lignes en fonction d'une valeur d'une cellule dans la ligne, je n'ai à ce jour pas trouvé d'autres solutions que de parcourir les lignes une à une avec un bons gros ForEach après avoir mis la source de données dans le grid.

    Primo, je trouce ça abberrant qu'il n'y ait pas d'évènements RowAdded et non RowsAdded (à moins que je ne l'ai pas trouvé...) et secundo, cela n'est pas très problématique dans des "petits" Grid; dans des grid à plusieures dizaines de milliers de lignes, cela devient plus pénible!

    Si quelqu'un à une solution magique pour ne pas re-parcourir le grid après avoir mis les données dedans, je suis preneur.

    Merci d'avance !

    vendredi 31 août 2012 13:33

Réponses

  • Je viens de trouver une solution "tirée par les cheveux" qui consiste à parcourir les lignes ajoutées aux déclenchement du RowsAdded.

    Private Sub DGVLoad(ByVal sender As Object, ByVal e As DataGridViewRowsAddedEventArgs) Handles DataGridView4.RowsAdded
            For i = e.RowIndex To e.RowIndex + e.RowCount - 1
                Dim lcdgvRow As DataGridViewRow = DataGridView4.Rows(i)
               'On peut bosser sur la ligne
            Next
    End Sub

    Je ne suis pas sur que cela soit plus rapide que de reparcourir le grid mais cela paraît plus propre.

    Plus qu'à se créer sons propre datagridview et de déclencher un événement dans la boucle !

    Bon dév à tous

    • Marqué comme réponse bobertin vendredi 31 août 2012 14:23
    vendredi 31 août 2012 14:23

Toutes les réponses

  • Je viens de trouver une solution "tirée par les cheveux" qui consiste à parcourir les lignes ajoutées aux déclenchement du RowsAdded.

    Private Sub DGVLoad(ByVal sender As Object, ByVal e As DataGridViewRowsAddedEventArgs) Handles DataGridView4.RowsAdded
            For i = e.RowIndex To e.RowIndex + e.RowCount - 1
                Dim lcdgvRow As DataGridViewRow = DataGridView4.Rows(i)
               'On peut bosser sur la ligne
            Next
    End Sub

    Je ne suis pas sur que cela soit plus rapide que de reparcourir le grid mais cela paraît plus propre.

    Plus qu'à se créer sons propre datagridview et de déclencher un événement dans la boucle !

    Bon dév à tous

    • Marqué comme réponse bobertin vendredi 31 août 2012 14:23
    vendredi 31 août 2012 14:23
  • Bonjour

    Il est tard mais cependant jamais trop tard....

    Si tu mets une variable genre Created=True dans l'evenement UserAddedRow et que tu utilises ensuite RowValidated, ca ne répond pas à ta question ?

    Parce que dans ce cas il me semble que tu peux considérer que tu valides une ligne qui vient d'être ajoutée ? non ?

    samedi 13 octobre 2012 16:59