Click here to Skip to main content
15,896,338 members
Articles / Programming Languages / C#
Tip/Trick

Achieve performance while updating a datatable bound to a bindingsource or datagridview

Rate me:
Please Sign up or sign in to vote.
4.43/5 (5 votes)
15 Feb 2010CPOL 21.2K   7  
Datatable in ADO.NET is highly useful to do in memory data related operations. But it is very painful to update data when it is bound to a datagridview or bindingsource.While I was developing an application in .NET with C#, I came across this problem in which I had to modify a data table of...
Datatable in ADO.NET is highly useful to do in memory data related operations. But it is very painful to update data when it is bound to a datagridview or bindingsource.

While I was developing an application in .NET with C#, I came across this problem in which I had to modify a data table of 100000 records. It took lots of time to update the entire table. I Googled how best I could to come out of this problem. Everywhere I got suggestions to set the below mentioned properties before and after updation:

 BindingSource bs = new BindingSource();
DataTable dt = new DataTable();

bs.DataSource = dt;
bs.SuspendBinding();
bs.RaiseListChangedEvents = false;
dt.BeginLoadData();
            
//== some modification on data table

dt.EndLoadData();
bs.RaiseListChangedEvents = true;
bs.ResumeBinding();
bs.ResetBindings(true);


The above code snippet performed OK compared to simple updation of datatable without setting properties. Still I wanted to achieve more performance while modifying datatable.
Upon investigation, I could achieve it by setting the filter property of binding source.

BindingSource bs = new BindingSource();
DataTable dt = new DataTable();

bs.DataSource = dt;
bs.SuspendBinding();
bs.RaiseListChangedEvents = false; 
bs.Filter = "1=0"; 
dt.BeginLoadData(); 
        
//== some modification on data table

dt.EndLoadData();
bs.RaiseListChangedEvents = true;
bs.Filter = "";

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
India India
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
-- There are no messages in this forum --