社区
C#
帖子详情
关于datagridview加载数据的问题
yhl2133156
2011-08-04 11:23:38
datagridview加载显示数据的时候,如果数据量很大,怎么实现异步加载,并且在后台加载显示数据时,把任务进度显示在progressbar上
...全文
145
6
打赏
收藏
关于datagridview加载数据的问题
datagridview加载显示数据的时候,如果数据量很大,怎么实现异步加载,并且在后台加载显示数据时,把任务进度显示在progressbar上
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sdl2005lyx
2011-08-04
打赏
举报
回复
问题的本质:是数据太大,太多,从数据库读取出来要消耗很多时间,用哪个线程,这个时间都少不了!
yhl2133156
2011-08-04
打赏
举报
回复
[Quote=引用 3 楼 sdl2005lyx 的回复:]
用代码实现分页:
private int pageSize = 0; //每页显示行数
private int pageCurrent = 0; //当前页号
private int pageCount = 0; //页数=总记录数/每页显示行数
private int nCurrent = 0; //当前记录行号
private int nMax = 0; //……
[/Quote]
我新建了一个线程去执行,一些Dataset的整理工作,由于在datagridview数据加载过程是ui线程在控制,难道就不能用另一个线程去操作吗?
如果不能就只能分页了。
yhl2133156
2011-08-04
打赏
举报
回复
[Quote=引用 2 楼 wangyue4 的回复:]
http://www.huanghengxu.com/Html/Article/57.htm
用BackgroundWorker
[/Quote]
我新建了一个线程去执行,一些Dataset的整理工作,由于在datagridview数据加载过程是ui线程在控制,难道就不能用另一个线程去操作吗?
如果不能就只能分页了。
sdl2005lyx
2011-08-04
打赏
举报
回复
用代码实现分页:
private int pageSize = 0; //每页显示行数
private int pageCurrent = 0; //当前页号
private int pageCount = 0; //页数=总记录数/每页显示行数
private int nCurrent = 0; //当前记录行号
private int nMax = 0; //总记录数
private DataTable srcTable = null; //元数据
private void InitPageSet()
{
pageSize = 30; //设置页面行数
nMax = srcTable.Rows.Count;
pageCount = (nMax / pageSize); //计算出总页数
if ((nMax % pageSize) > 0)
{
pageCount++;
}
pageCurrent = 1; //当前页数从1开始
nCurrent = 0; //当前记录数从0开始
First.Enabled =false;
Prev.Enabled = false;
bool b = pageCurrent == pageCount ? false : true;
Next.Enabled = b;
End.Enabled = b;
}
private DataTable LoadPageData()
{
int nStartPos = 0; //当前页面开始记录行
int nEndPos = 0; //当前页面结束记录行
DataTable dtTemp = null;
if (srcTable == null || srcTable.Rows.Count == 0)
return srcTable;
try
{
dtTemp = srcTable.Clone(); //克隆DataTable结构框架
if (pageCurrent == pageCount)
{
nEndPos = nMax;
}
else
{
nEndPos = pageSize * pageCurrent;
}
nStartPos = nCurrent;
//从元数据源复制记录行
for (int i = nStartPos; i < nEndPos; i++)
{
dtTemp.ImportRow(srcTable.Rows[i]);
nCurrent++;
}
textEdit1.Text = pageCurrent.ToString();
Page.Text = string.Format("/{0}页", pageCount);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + "LoadPageData");
}
return dtTemp;
}
private void First_Click(object sender, EventArgs e)
{
try
{
pageCurrent = 1; //当前页数从1开始
nCurrent = 0; //当前记录数从0开始
if (srcTable == null || srcTable.Rows.Count == 0)
return;
DataTable table = LoadPageData();
ChangeDataSoure(table);
First.Enabled =false;
Prev.Enabled = false;
Next.Enabled = true;
End.Enabled = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void Prev_Click(object sender, EventArgs e)
{
try
{
pageCurrent--;
nCurrent = pageSize * (pageCurrent - 1);
if (srcTable == null || srcTable.Rows.Count == 0)
return;
DataTable table = LoadPageData();
ChangeDataSoure(table);
bool b= pageCurrent <= 1 ? false:true;
First.Enabled = b;
Prev.Enabled = b;
Next.Enabled = true;
End.Enabled = true;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void Next_Click(object sender, EventArgs e)
{
try
{
pageCurrent++;
nCurrent = pageSize * (pageCurrent - 1);
if (srcTable == null || srcTable.Rows.Count == 0)
return;
DataTable table=LoadPageData();
ChangeDataSoure(table);
bool b= pageCurrent >= pageCount ? false : true;
Next.Enabled = b;
End.Enabled = b;
First.Enabled = true;
Prev.Enabled = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void End_Click(object sender, EventArgs e)
{
try
{
pageCurrent = pageCount;
nCurrent = pageSize * (pageCurrent - 1);
if (srcTable == null || srcTable.Rows.Count == 0)
return;
DataTable table = LoadPageData();
ChangeDataSoure(table);
Next.Enabled =false;
End.Enabled = false;
First.Enabled = true;
Prev.Enabled = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
大黄鸭在发光
2011-08-04
打赏
举报
回复
http://www.huanghengxu.com/Html/Article/57.htm
用BackgroundWorker
kid_wang
2011-08-04
打赏
举报
回复
数据库里存储过程分页去吧。
c#datagrid操作,解决
datagridView
加载
慢.docx
但是,在使用过程中,人们经常会遇到
DataGridView
直接绑定 DataSource
加载
数据
比较慢的
问题
。这是一个非常棘手的
问题
,很多开发者都曾经遇到过这个
问题
。 在本文中,我们将讨论
DataGridView
的操作,特别是解决...
.net中
DataGridView
异步
加载
大批量
数据
多线程异步
加载
大批量
数据
到
Datagridview
中,没次
加载
1000条
数据
。 引用DLL,调用方法: string sql = "select top {0} * from {2} where FItemID not in (select top {1} FItemID from {2})"; string tbName = ...
DataGridView
设置列头,动态
加载
数据
源,动态改变颜色
在ASP.Net中
DataGridView
...在ASP.Net中应用
DataGridView
动态绑定
数据
源 设置
DataGridView
行的颜色,鼠标移动改变
数据
行颜色。 很经典的
DataGridView
使用源码实例。 方法写的很简单,很容易理解,初学者也能快速使用。
C#
数据
库增删查改及
DataGridView
刷新
数据
在这个主题中,我们将深入探讨如何在C#中进行
数据
库的增删查改(CRUD)操作,并结合
DataGridView
控件实时刷新显示
数据
。 首先,让我们关注“
数据
库增删查改”这一概念。CRUD是创建(Create)、读取(Read)、更新...
C#
datagridview
绑定
数据
后绑定标题
在博客文章中,作者可能会深入讨论如何优化性能,比如通过延迟
加载
或分页来处理大量
数据
;如何处理
数据
绑定时的错误;或者如何使用模板列来显示自定义内容,如图像或按钮。此外,文章可能还会介绍如何在用户交互时...
C#
111,092
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章