Chargement de la DataTable Lent Quand il est Lié à DataGridView.Source de données

J'ai cherché partout et je ne peux pas comprendre ça. Je suis en train de travailler sur un Winforms de l'INTERFACE utilisateur qui est en tirant de gros volumes de lignes que j'ai besoin d'afficher dans un DataGridView. J'ai déjà tout lu à propos de la limitation du nombre de lignes et de pagination et il n'y a absolument pas de bonne façon pour moi de le faire. Fondamentalement, je suis en train de travailler sur la TargetDataViewer de contrôle de l'Étendue des Événements Manager for SQL Server 2008 que j'ai écrit sur Codeplex.

http://extendedeventmanager.codeplex.com/

Je suis limité à ce que je peux faire en fonction de la cible et la façon dont il présente des données. Ce que j'essaie de faire est de transmettre les données qui ont été lues à partir d'une cible dans le DataGridView similaire à la façon dont Profiler, ou SQL Server Management Studio d'affichage des données de flux. J'ai réécrit beaucoup de code, et un BackgroundWorker de l'extraction de données et de traitement dans une DataTable. Si je n'ai pas mis le DataGridView.DataSource = DataTable, je peux charger 300K+ lignes de données dans la Table de données en quelques minutes, il fonctionne vraiment rapide. Dès que j'ai ajouter le DataTable à la source de données lente, presque à l'arrêt (au lieu de quelques minutes, le même 300K lignes peuvent prendre une 1/2 heure).

Je sais que le problème n'est pas de mon code de traitement, il est spécifique à être lié à la DataGridView.Source de données, et j'ai du code de cadencement pour le prouver. Je ne peux pas comprendre comment obtenir autour de cette. Pour les Performances, je peux en retard lier le contrôle à la Table de données une fois les données chargées, mais c'est vraiment une merde expérience de l'utilisateur. Je vois beaucoup de gens se plaignent du DataGridView impact sur les performances lors du chargement de données si ce n'est peut-être une limitation, je suis coincé avec? Des idées?

Espérons que je n'ai pas paraître stupide. Mais ne DataReader aider dans ce cas?
Non, j'ai SqlDataReader c'est en tirant un non-liés au schéma XML du document pour chaque ligne. Puis-je avoir le code qui est l'analyse de ce document XML dans un objet[] qui est passée comme params à la LoadRow() la méthode.

OriginalL'auteur Jonathan Kehayias | 2009-07-17