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

Windows Forms Discussion :

[VB 2005] Supprimer toutes les lignes d'un DataGridView


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2004
    Messages : 68
    Points : 86
    Points
    86
    Par défaut [VB 2005] Supprimer toutes les lignes d'un DataGridView
    Bonjour,

    Je n'ai pas trouvé de méthode pour supprimer toutes les lignes d'un DataGridView alors j'en ai écrit une, qui est malheureusement très lente à l'exécution.

    Les lignes du DataGridView sont créées en obtenant les données d'un Serveur SQL 2000 avec un objet SQLDataReader.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Private Sub ResetDataGridView(ByRef GridView As DataGridView)
             With GridView
                Dim Lignes As Integer = .Rows.Count
                For i As Integer = Lignes - 1 To 0 Step -1
                    .Rows.RemoveAt(i)
                Next
            End With
         End Sub
    Les temps d'exécution sur un AMD 64 3000+ sont les suivants :

    Pour 20 lignes, chargemement : 0.30 s, suppression : 0,125 s ;
    Pour 117 lignes : 0,34 s et 1,69 s ;
    Pour 221 lignes : 0,48 s et 5,70 s ;
    Pour 1118 lignes : 1,22 s et 153,70 s.

    Il doit certainement y avoir une meilleur façon de procéder.

  2. #2
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.GridView .DataSource = Nothing
    ne convient pas ??

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2004
    Messages : 68
    Points : 86
    Points
    86
    Par défaut
    Non la propriété DataSource est déjà à Nothing puisque j'alimente la DataGridView avec un SQLDataReader:

    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
            Dim Rdr As SqlDataReader
            Dim Commande As SqlCommand
            Dim Connexion As new SqlConnection (....)
     
            Connexion.Open()
            Dim Client As String = DataGridView1.Item(1, e.RowIndex).Value
            Dim DatePièce As DateTime
            Dim Réf, Désignation
            Dim Montant As Decimal
            Dim Cstring = String.Format("SELECT DO_date, ar_ref, dl_design, dl_montantttc from f_docligne where ct_num = '{0}'", Client)
            Commande = New SqlCommand(Cstring, Connexion)
            Rdr = Commande.ExecuteReader(CommandBehavior.CloseConnection)
            While Rdr.Read
                Try
                    DatePièce = Rdr.GetDateTime(0).ToString("d")
                    Réf = Rdr.GetString(1)
                    Désignation = Rdr.GetString(2)
                    Montant = Rdr.GetDecimal(3)
                    DataGridView2.Rows.Add(DatePièce.ToString, Réf, Désignation, Montant.ToString("#,##0.00"))
                Catch ex As Exception
                    'Ne fait rien, juste pour éviter les valeurs null
                End Try
            End While
            Connexion.Close()

  4. #4
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    et GridView.Rows.Clear() ne fonctionne pas non plus ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2004
    Messages : 68
    Points : 86
    Points
    86
    Par défaut
    Citation Envoyé par bidou
    et GridView.Rows.Clear() ne fonctionne pas non plus ?
    Oui ça marche, un grand merci.

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

Discussions similaires

  1. Supprimer toutes les lignes vides
    Par Lorenzole+bo dans le forum Contribuez
    Réponses: 2
    Dernier message: 22/09/2008, 13h07
  2. Supprime toutes les lignes d'une table fichier
    Par Loko dans le forum WinDev
    Réponses: 38
    Dernier message: 10/12/2007, 16h21
  3. Supprimer toutes les lignes en dessous d'une cellule
    Par liop49 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/08/2007, 13h50
  4. supprimer toutes les lignes d'un flexgrid sauf la ligne de titre
    Par cari dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 11/08/2006, 10h39
  5. Supprimer toutes les lignes et colonnes d'un tableau
    Par pekka77 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 01/12/2005, 11h26

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