Charger un datagridview en arrière plan

Résolu
L3Fgandalf Messages postés 10 Date d'inscription mercredi 10 décembre 2003 Statut Membre Dernière intervention 9 juin 2008 - 13 nov. 2007 à 17:54
L3Fgandalf Messages postés 10 Date d'inscription mercredi 10 décembre 2003 Statut Membre Dernière intervention 9 juin 2008 - 15 nov. 2007 à 15:39
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

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
13 nov. 2007 à 19:02
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
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
13 nov. 2007 à 20:54
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
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
14 nov. 2007 à 18:56
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.
3
L3Fgandalf Messages postés 10 Date d'inscription mercredi 10 décembre 2003 Statut Membre Dernière intervention 9 juin 2008
13 nov. 2007 à 20:27
1 Comment fais tu pour désactiver le rendu pour le chargement

3 Je n'ai pas compris le principe de pagination
0

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

Posez votre question
L3Fgandalf Messages postés 10 Date d'inscription mercredi 10 décembre 2003 Statut Membre Dernière intervention 9 juin 2008
13 nov. 2007 à 23:30
Oki merci beaucoup pour ces renseignements?
Je vais voir ça demain.
Merci ça m'aide déjà
0
L3Fgandalf Messages postés 10 Date d'inscription mercredi 10 décembre 2003 Statut Membre Dernière intervention 9 juin 2008
14 nov. 2007 à 15:35
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
0
L3Fgandalf Messages postés 10 Date d'inscription mercredi 10 décembre 2003 Statut Membre Dernière intervention 9 juin 2008
15 nov. 2007 à 15:39
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
0
Rejoignez-nous