Datagridview

debutant71 Messages postés 52 Date d'inscription dimanche 19 octobre 2014 Statut Membre Dernière intervention 17 juillet 2015 - 23 juin 2015 à 23:13
Whismeril Messages postés 19035 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 mai 2024 - 18 juil. 2015 à 08:10
Bonsoir,
comment peut-on faire pour accelerer l'affichage dans un datagrid avec datasource liée a un datatable

merci.

12 réponses

Whismeril Messages postés 19035 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 mai 2024 656
23 juin 2015 à 23:17
Bonsoir,
Datagridview et datagrid sont deux contrôles différents, il faut être précis.
De plus sans le code utilisé, pas facile de répondre.
Merci d'utiliser la coloration syntaxique.
0
debutant71 Messages postés 52 Date d'inscription dimanche 19 octobre 2014 Statut Membre Dernière intervention 17 juillet 2015
23 juin 2015 à 23:40
c'est un datagridview
pour le remplire je fais comme ceci

   
Me.DataGridDepre.DataSource = table

        DataGridDepre.AlternatingRowsDefaultCellStyle.BackColor = Color.AliceBlue

        For Each item In Chklistbox.Items

            If Not Chklistbox.CheckedItems.Contains(item) Then
                DataGridDepre.Columns(item.ToString).Visible = False
            End If

        Next
0
Whismeril Messages postés 19035 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 mai 2024 656
24 juin 2015 à 06:19
Bonjour, pour la couleur alternative tu peux le mettre dans les propriétés.
C'est fait une fois pour toute et ça évite de l'appliquer à chaque chargement.

Est ce beaucoup plus rapide si tu commentes la boucle pour choisir si la colonne est visible ou non?
0
debutant71 Messages postés 52 Date d'inscription dimanche 19 octobre 2014 Statut Membre Dernière intervention 17 juillet 2015
24 juin 2015 à 19:29
bonjour,
je vais essayer pour la couleur.
par contre je ne vois pas ce que tu veut par commente ma boucle
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Whismeril Messages postés 19035 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 mai 2024 656
24 juin 2015 à 19:36
Et bien ne la commente pas supprime la et regarde si ça va plus vite, mais pas un peu plus vite, beaucoup plus vite.
0
debutant71 Messages postés 52 Date d'inscription dimanche 19 octobre 2014 Statut Membre Dernière intervention 17 juillet 2015
24 juin 2015 à 21:11
j'ai essayer comme ça mais ça ne change rien

Me.DataGridDepre.DataSource = table


j'ai vu qu'il y a le mode virtuel mais je n'arrive pas a le mettre en place avec datasource.Sur le site de microsoft il y a des exemples
mais ça n'a pas l'aire de marcher avec datasource et datatable
0
Whismeril Messages postés 19035 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 mai 2024 656
24 juin 2015 à 21:18
Ok, ça élimine donc le rafraîchissement de la form entre chaque changement de visibilité par colonne.

A la louche, combien tu as de lignes? Combien de colonnes?
0
debutant71 Messages postés 52 Date d'inscription dimanche 19 octobre 2014 Statut Membre Dernière intervention 17 juillet 2015
24 juin 2015 à 21:26
10000 lignes a peu près et 18 colonnes
0
Whismeril Messages postés 19035 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 mai 2024 656
24 juin 2015 à 21:27
Ha Ba voila, c'est beaucoup trop, il faut echantilonner
0
debutant71 Messages postés 52 Date d'inscription dimanche 19 octobre 2014 Statut Membre Dernière intervention 17 juillet 2015
24 juin 2015 à 21:33
je penser bien,mais par contre je n'ai aucune idée comment faire
0
Whismeril Messages postés 19035 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 mai 2024 656
24 juin 2015 à 21:39
Il faut que ta requête retourne disons 100 lignes, et que quand tu fait défiler le datagridview tu mettes à jour ta requête à mettons 20 % du début ou de la fin.

Dans le détail, je ne peux pas te dire, je ne fais pas de base de données.
0
Whismeril Messages postés 19035 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 mai 2024 656
24 juin 2015 à 21:41
Dans le cas ou c'est oui, alors, le plus simple est d'ajouter une propriété en lecture seule (ParametresAffiches) qui retourne
String.Join(", ", Parametres)
0
debutant71 Messages postés 52 Date d'inscription dimanche 19 octobre 2014 Statut Membre Dernière intervention 17 juillet 2015
17 juil. 2015 à 23:23
Bonsoir,
alors j'ai réussi à afficher plus vite les données en créant le datagridview par code,par contre des que je veux calculer le nombre de ligne ça ralenti fortement.
Private Sub DataGridDepreStock_RowStateChanged(sender As Object, e As DataGridViewRowStateChangedEventArgs) Handles DataGridDepreStock.RowStateChanged

      Dim x As Integer
      Dim s As String = ""

    For x = 0 To DataGridDepreStock.Rows.Count
         s = DataGridDepreStock.RowCount.ToString(x)
           LblNombre.Text = s

       Next

    End Sub
0
Whismeril Messages postés 19035 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 mai 2024 656
Modifié par Whismeril le 18/07/2015 à 08:11
Bonjour, je ne comprends pas ce que tu veux faire avec ce code, c'est plein d'incohérences
  • ToString(x) écrase la valeur de RowCount

    For x = 0 To DataGridDepreStock.Rows.Count
         s = x
         LblNombre.Text = s
       Next
donne le même résultat
  • En supposant que LblNombre soit un label, tu fais une boucle de 10000 ligne qui va changer cette valeur, si le but est de voir défiler le nombre de ligne, une barre de progression serait plus visuelle, si le but est d'afficher dans un label, le nombre final de ligne, pas besoin de boucle

    
         LblNombre.Text = DataGridDepreStock.Rows.Count.ToString()
0
Rejoignez-nous