VB.NET DataGridView. Comment détruire la dernière rangée (row) ?

Problématique

Vous alimentez par programme une DataGridView. J’entends par là que vous ne l’avez pas reliée à une source de données. Vous avez tout bien ajusté pour que la DataGridView ne fasse pas apparaître la ligne vide qui permet les ajouts manuels mais qui dans votre cas fait vraiment moche.

Pour détruire une ligne quelconque, tout va bien. Mais si vous voulez détruire la dernière ligne, VB.NET vous renvoie le message d’exception

Impossible de supprimer la nouvelle ligne non validée

Alors vous cherchez : dans le MSDN Microsoft, dans les forums. Surprenant, j’ai jamais vu une question si souvent posée et qui avait aussi peu de réponses.

Solution (approximative)

D’abord, le truc a ne pas faire que vous recommandent certains de manière péremptoire, modifier de la manière suivante la propriété de la DataGridView

AllowUsersToAddRows=False

parce que dans ce cas, vous ne pouvez plus ajouter de ligne par programme. Donc la question de détruire une ligne ne se pose plus : la grille reste vide.

Ce n’est donc pas la solution.

Tout ce que j’ai trouvé dans ce cas, c’est de remplacer la dernière ligne par une ligne vide, le code a donc l’allure suivante

With grdBooks

    row = .CurrentRow.Index

    If row = .Rows.Count – 1 Then

        .Rows(row).Cells(« col1 »).Value = «  »

        .Rows(row).Cells(« col2 »).Value = «  »

        .Rows(row).Cells(« col3 »).Value = «  »

        .Rows(row).Cells(« col4 »).Value = «  »

        .Rows(row).Cells(« col5 »).Value = «  »

     Else

         .Rows.RemoveAt(row)

     End If

 End With

Ce n’est pas extraordinaire puisque je me retrouve avec la ligne vide dont je ne voulais pas. Et si vous avez mieux, je suis preneur. Merci d’avance.

Une réflexion au sujet de « VB.NET DataGridView. Comment détruire la dernière rangée (row) ? »

  1. Ping : VB.NET DataGridView. Comment détruire la dernière rangée ? (suite et fin ?) | Mon blog-note informatique

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *