社区
C#
帖子详情
关于datagridview加载数据的问题
yhl2133156
2011-08-04 11:23:38
datagridview加载显示数据的时候,如果数据量很大,怎么实现异步加载,并且在后台加载显示数据时,把任务进度显示在progressbar上
...全文
182
6
打赏
收藏
关于datagridview加载数据的问题
datagridview加载显示数据的时候,如果数据量很大,怎么实现异步加载,并且在后台加载显示数据时,把任务进度显示在progressbar上
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
数据库里存储过程分页去吧。
DataGridView
控件在
加载
数据
时产生的闪烁
问题
本文探讨了在使用C#中
DataGridView
控件时,遇到的
数据
加载
过程中控件闪烁的
问题
,并提供了相应的解决方案。
datagridview
绑定
数据
源+清空(表格重复
加载
问题
)
本文介绍了使用
DataGridView
控件进行
数据
绑定的方法,并分享了解决在更新
数据
源时出现的重复
加载
问题
的经验。通过代码示例详细讲解如何创建列、设置样式及绑定
数据
,最后给出了在特定情况下无法清除
DataGridView
数据
的有效解决方案。
Winform使用
dataGridView
动态
加载
数据
库
数据
并显示一列
问题
集合
本文详细介绍了如何使用C#编程设置
DataGridView
控件的样式,包括禁止用户添加行、设置单元格显示样式、调整列宽、禁用视觉样式、设置行标题样式等。此外,还展示了如何在代码中
加载
数据
、转换单元格值,以及在
加载
数据
时不选中任何行。同时,讲解了如何根据单元格值改变其颜色,避免闪烁
问题
,以及在Cell Formatting事件中修改单元格内容和颜色。
C#中
DataGridView
控件
加载
数据
无法显示
本文讲述了在C#编程中遇到的一个
问题
:使用
DataGridView
控件
加载
数据
库查询结果时无法显示
数据
。作者通过检查代码和
数据
库,发现
数据
查询无误,但
数据
显示异常。经过一番研究,发现在控件设置中,需要指定DataPropertyName属性来绑定
数据
源的列,以便正确显示查询结果。
c#
datagridview
加载
大量
数据
闪烁
问题
博客介绍了在C#和Java中编写扩展方法的方式,通过反射实现,将类定义在DataGirdView或ListView所在窗体类外面,还提及了调用方法,属于信息技术领域的编程技巧分享。
C#
111,131
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章