title: Loading DataTable Slow When Bound to DataGridView.Datasource
body: <p>I've searched all over and I can't figure this one out.  I am working on a Winforms UI that is pulling large volumes of rows that I need to display in a DataGridView.  I have already read all about limiting row counts and paging and there is absolutely no good way for me to do this.  Basically I am working on the TargetDataViewer control of the Extended Events Manager for SQL Server 2008 that I wrote on Codeplex.</p>
  
  <p><a href="http://extendedeventmanager.codeplex.com/" rel="nofollow noreferrer">http://extendedeventmanager.codeplex.com/</a></p>
  
  <p>I am limited to what I can do based on the specific target and how it presents data.  What I am trying to do is stream the data that has been read from a target into the DataGridView similar to how Profiler, or SQL Server Management Studio display data as it streams in.  I rewrote a lot of code, and have a BackgroundWorker pulling data and processing it into a DataTable.  If I don't set the DataGridView.DataSource = DataTable, I can load 300K+ rows of data into the DataTable in a few minutes, it really runs fast.  As soon as I add the DataTable to the DataSource it slow to almost a halt (instead of a few minutes the same 300K rows can take a 1/2 hr).  </p>
  
  <p>I know that the problem isn't my processing code, it is specific to being bound to the DataGridView.DataSource, and I have timing code to prove this.  I can't figure out how to get around this.  For Performance I can late bind the control to the DataTable after the data is loaded, but that is a really crappy user experience.  I see lots of people complaining about the DataGridView performance impact when loading data so this may just be a limitation I am stuck with?  Any ideas?</p>