读书人

datagridview大数据量绑定的有关问题

发布时间: 2012-02-15 12:09:44 作者: rapoo

datagridview大数据量绑定的问题
winform程序,每次需要从数据库中读取10万多条数据,不能分页。因为读取数据库等待时间较长,我用了begininvoke等方法不占用界面线程,同时提示一个滚动条。但是我在给datagridview的datasource赋值的时候(datagridview.datasource=dt),界面就会进入假死状态,等大概10秒钟后绑定完成才能显示出来。我觉得可能是在绑定的时候占用了界面线程,但是我这个方法明明是写在begininvoke里面的,不知道该怎么解决。附代码,各位帮帮忙,多谢啦!
//创建委托
delegate void GetDateDelegate();
delegate void BindGrid();
//定义全局datatable
DataTable dt;
private void button1_Click(object sender, EventArgs e)
{

//执行方法
GetDateDelegate getdate = new GetDateDelegate(GetDate);

getdate.BeginInvoke(null, null);


}

/// <summary>
/// 取得数据
/// </summary>
void GetDate()
{
dt = BLL.Common.GetAttr();//从数据库获得10万条以上的datatable
FillData();


}

/// <summary>
/// 绑定datagrid
/// </summary>
private void FillData()
{

if (dataGridView1.InvokeRequired)
{
BindGrid filldate = new BindGrid(FillData);


this.BeginInvoke(filldate);
}
else
{


this.dataGridView1.DataSource = dt;
}

}

[解决办法]
开个线程试试吧
[解决办法]
关注帮顶
[解决办法]
用virtual mode
只绑定主键和排序的列

读书人网 >C#

热点推荐