Charger un datagridview en arrière plan [Résolu]

Signaler
Messages postés
10
Date d'inscription
mercredi 10 décembre 2003
Statut
Membre
Dernière intervention
9 juin 2008
-
Messages postés
10
Date d'inscription
mercredi 10 décembre 2003
Statut
Membre
Dernière intervention
9 juin 2008
-
Bonjour
J'ai développé un logiciel pour un kiné.
Je doit charger dans une fenêtre tous les clients mais il y en a presque 8000 et c'est un peu long de devoir attendre à chaque fois que je la recharge.
J'ai donc essayé avec un backgroundworker mais il n'accepte pas de modifier des éléments graphiques.
Comment puis je faire pour remplir ma liste au fur et à mesure et surtout pour faire en sorte que ça ne bloque pas le programme à chaque fois.
merci d'avance

7 réponses

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Salut

Tu as plusieurs solutions.

1-> Mettre un beginupdate endupdate pour désactiver le rendu lors du
chargement
2-> Equivalent, mais pas recommandé (pas propre) rendre invisible et
visible le controle apres le chargement
meme effet que l'astuce 1 qui est la bonne méthode.
3-> Mettre en place une pagination sur la datagridview.
http://www.vb-tips.com/dbPages.aspx?ID=5dbe894a-a7e6-434c-bd84-73494c71063f
(ce source montre peut etre comment mettre en place)

bon coding
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Salut

Excuse apparament ca n'existe pas sur ce controle
utilise à la place
datagrid.SuspendLayout()
datagrid.resumelayout()

La pagination, consiste à avoir sur chaque page 50 enregistrement
par exemple

et ensuite des boutons premier precedent suivant dernier

http://www.codeproject.com/useritems/DataGridView_manipulation.asp

voila
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Salut

Ca met quoi comme message ca serait interessant de savoir.
Sinon, je pense que c'est du au fait que le bw et le thread
d'affichage des forms sont différents.

Dans ce cas, il y a une possibilité, pour resoudre le problème
c'est de passer par les invoke et la reflexion.

Mais je pense pas que tu sois obiliger d'utiliser un bw, sinon
débrouilles toi, pour trouver une autre solution.

Ton bw remplit un dataset ou une collection, et apres tu bindes
cette collection.

Pour le invoke
http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework.windowsforms/topic17366.aspx

vas peut etre t'atider
Bon courage.
Messages postés
10
Date d'inscription
mercredi 10 décembre 2003
Statut
Membre
Dernière intervention
9 juin 2008

1 Comment fais tu pour désactiver le rendu pour le chargement

3 Je n'ai pas compris le principe de pagination
Messages postés
10
Date d'inscription
mercredi 10 décembre 2003
Statut
Membre
Dernière intervention
9 juin 2008

Oki merci beaucoup pour ces renseignements?
Je vais voir ça demain.
Merci ça m'aide déjà
Messages postés
10
Date d'inscription
mercredi 10 décembre 2003
Statut
Membre
Dernière intervention
9 juin 2008

J'ai essayé mais si je met juste :
datagrid.SuspendLayout()

traitement

datagrid.resumelayout()

c'est toujours aussi lent
et si je fais

datagrid.SuspendLayout()

BW.dowork

datagrid.resumelayout()
Ca plante encore
Messages postés
10
Date d'inscription
mercredi 10 décembre 2003
Statut
Membre
Dernière intervention
9 juin 2008

C'est effectivement la raison et la solution.
Pour ce qui ne parle pas beaucoup anglais et qui ont le même problème :

http://www.developpez.net/forums/archive/index.php/t-118709.html