Bonjour à tous,
Dans une form, j'ai placé un datagridview auquel j'assigne des données d'une table d'un dataset suite à une requête SQL via ADO.net sur le serveur.
La sélection des données vers le dataset est faite dans un thread pour éviter les temps de latence d'un nouveau chargement de données.
Ceci est donc transparent pour l'utilisateur car il peut continuer à interagir avec les données actuellement affichées.
Le problème se pose au moment de
me.datagridview.datasource = DS.tables(0)
Cette opération prend presque plus de temps que la sélection des données et SURTOUT ne peux pas être effectuée dans le thread de sélection car une exception de type crossthreadoperationexception est levée, du fait qu'un thread essaie d'accèder à un contrôle qui n'est pas dans le même thread.
Durant cette assignation, la form freeze, voire 'not responding' jusqu'à la fin de l'opération.
Quelqu'un aurait une autre technique à me proposer? Je ne suis surement pas le seul à avoir rencontré ce problème et n'ai rien trouvé de concluant sur le forum.
Pour éviter d'assigner de trop lourds dataset, j'ai pensé à paginer mes records dans mon datagridview.
Mais la encore, SQL server est limité car la fonction LIMIT(x,y) surperutile de mySQL n'existe pas dans SQL server !!!
Merci à vous pour vos idées sur cette question probablement déjà soulevée.
Partager