public partial class Form1 : Form
{
string constr1 = "server=localhost;uid=sa;pwd=Password123;initial catalog=Test_Data";
private delegate void UpdateGridDelegate(DataTable ds);
BindingList<People> bindPeople = new BindingList<People>();
BindingSource bindingSource = new BindingSource();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
progressBar1.Value = progressBar1.Minimum;
// Start progres
this.progressTimer.Start();
// Set Cursor
this.Cursor = Cursors.AppStarting;
bindPeople.Clear();
bindingSource.DataSource = bindPeople;
dataGridView1.DataSource = bindingSource;
backgroundWorker1.RunWorkerAsync();
}
private void PopulateData()
{
int progressChunk = 0;
BindingList<People> blPeople = new BindingList<People>();
People peop;
DataSet dsRecords = new DataSet();
DataTable tab = new DataTable();
dsRecords.Tables.Add(tab);
string strSql = "Select * from mst_introducer";
SqlConnection con = new SqlConnection(constr1);
SqlCommand com = new SqlCommand(strSql, con);
con.Open();
//IAsyncResult result = com.BeginExecuteReader();
SqlDataReader reader = com.ExecuteReader();
while (reader.Read())
{
peop = new People(reader["INTRODUCER_CODE"].ToString(), reader["INTRODUCER_NAME"].ToString(), reader["ADDRESS"].ToString());
this.backgroundWorker1.ReportProgress(0, peop);
// give the UI thread a chance to update screen.
progressChunk++;
if (progressChunk > 10)
{
Thread.Sleep(120);
progressChunk = 0;
}
//blPeople.Add(peop);
}
con.Close();
reader.Close();
//return blPeople;
}
private void UpdateNoOfRows()
{
this.statusLabel.Text = String.Format("{0} Records Found", bindPeople.Count);
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
PopulateData();
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
// Set Cursor
this.Cursor = Cursors.Default;
this.UseWaitCursor = false;
// Turn off
this.progressTimer.Stop();
this.progressTimer.Interval = 1000;
MessageBox.Show("Completed");
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
People pep = e.UserState as People;
bindPeople.Add(pep);
UpdateNoOfRows();
}
private void timer1_Tick(object sender, EventArgs e)
{
// Slow down
this.progressTimer.Interval = (this.progressTimer.Interval * 3);
// Update progress bar
if ((this.progressBar1.Value + this.progressBar1.Step) > this.progressBar1.Maximum)
{
this.progressBar1.Value = this.progressBar1.Minimum;
}
else
{
this.progressBar1.Value += this.progressBar1.Step;
}
}
}
//-------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
namespace WinTest
{
class People:INotifyPropertyChanged
{
private string Member_Code = string.Empty;
private string Member_Name = string.Empty;
private string Member_Address = string.Empty;
public People(string strcode, string strname, string strAddress)
{
MemberCode = strcode;
MemberName = strname;
Address = strAddress;
}
public string MemberCode
{
get
{ return Member_Code; }
set
{
if (value != Member_Code)
{
// Set Path
Member_Code = value;
OnPropertyChanged(new PropertyChangedEventArgs("MemberCode"));
}
}
}
public string MemberName
{
get
{
return Member_Name;
}
set
{
if (value != Member_Name)
{
// Set Path
Member_Name = value;
OnPropertyChanged(new PropertyChangedEventArgs("MemberName"));
}
}
}
public string Address
{
get
{
return Member_Address;
}
set
{
if (value != Member_Address)
{
// Set Path
Member_Address = value;
OnPropertyChanged(new PropertyChangedEventArgs("Address"));
}
}
}
#region INotifyPropertyChanged Members
protected virtual void OnPropertyChanged(PropertyChangedEventArgs e)
{
if (null != this.PropertyChanged)
{
PropertyChanged(this, e);
}
}
public event PropertyChangedEventHandler PropertyChanged;
#endregion
}
}