在多线程里查询数据库并填充dataGrid
来源:互联网 发布:网络推广代运营合同 编辑:程序博客网 时间:2024/06/06 00:15
在查询大数据量时,窗体界面会不动,“正在查询...”的提示也不能显示。所以打算用多线程来实现,可是当在线程里面执行到 this.dataGridDF.DataSource=dt.DefaultView;填充数据时却提示报错,说什么该线程不能调用主线程创建的控件等等。后来查了许多资料,终于搞定。可以在查询数据库时操作别的了,“正在查询...”的提示也显示了。
//或者在前面用一个线程查询,在线程里调用dataGrid.BeginInvoke(异步方法)来单独填充
public delegate void myDelegate(); DataTable dt;
private void btnDianJia_Click(object sender, System.EventArgs e) { try { mythread = new Thread(new ThreadStart(ThreadWork)); mythread.Start(); } catch(System.Exception ex) { MessageBox.Show(this,ex.Message,"提示",MessageBoxButtons.OK,MessageBoxIcon.Information); } } void ThreadWork() { this.dataGridDJ.CaptionText="正在查询电价数据..."; mf.statusBarPanel1.Text="正在查询电价数据..."; this.Cursor=Cursors.WaitCursor;
string shijian=this.dateTimeDianJia.DateValue; DateTime today=DateTime.Today; string mingcheng=this.txtMingCheng.Text; string leibie=this.cmbBoxLiebie_DJ.SelectedValue.ToString(); PowerWeb.BLL.DianFeiDianJia.DianJia dj=new PowerWeb.BLL.DianFeiDianJia.DianJia();
if(shijian==today.ToString("yyyyMM")) { dt=dj.GetList(leibie,mingcheng).Tables[0]; } else { dt=dj.GetListOld(leibie,mingcheng,shijian).Tables[0]; } this.dataGridDJ.CaptionText=shijian+"电价信息 (共计条"+dt.Rows.Count.ToString()+"记录)";
dataGridDJ.BeginInvoke(new myDelegate(FillData));//异步调用(来填充) this.Cursor=Cursors.Default; mf.statusBarPanel1.Text="查询结束"; } private void FillData() {
- 在多线程里查询数据库并填充dataGrid(原创)
- 在多线程里查询数据库并填充dataGrid
- 从SQL Server数据库提取图片并显示在DataGrid
- 从SQL Server数据库提取图片并显示在DataGrid
- 从SQL Server数据库提取图片并显示在DataGrid
- SQL Server数据库提取图片并显示在DataGrid
- 从SQL Server数据库提取图片并显示在DataGrid
- 从SQL Server数据库提取图片并显示在DataGrid
- 从SQL Server数据库提取图片并显示在DataGrid
- C#查询数据库填充表格
- 【数据库SQL】在本地电脑里的查询分析器里,读取其他电脑的数据库数据。跨店SQL里查询
- 数据库里查询数据
- 为什么不能在web页面里查询数据库?
- 如何查询mysql数据库里某个字段在哪张表中
- ASP.NET访问数据库(一):使用odbc填充datagrid
- 有关数据库查询与填充(通用方法)
- 查询数据库信息填充DataGridView时…
- C#查询SQLite并使用DataGrid显示
- RegularExpressionValidator 事件
- RegularExpressionValidator 事件
- RegularExpressionValidator 事件
- IE7 Ctrl+Enter自动补全网址问题
- RegularExpressionValidator 事件
- 在多线程里查询数据库并填充dataGrid
- RegularExpressionValidator 事件
- 创建多线程应用程序
- 异步Socket通信总结
- 基于TCP协议的发送和接收端
- Socket基本编程
- 基于套接字通信的远程截屏显示与控制技术
- 数据库开发个人总结(ADO.NET小结)
- 封装的ADO.NET对数据库操作经典类