DataGridView分次加载数据
来源:互联网 发布:mmap软件下载 mac 编辑:程序博客网 时间:2024/05/16 01:37
例如,有上千条记录,如果一次性加载,势必会影响效率,分页读取似乎能解决问题,但是在DataGridView中加上分页按钮也比较麻烦。此前,使用过Oracle Form,一次会显示一些数据,而当数据比较多时,可以通过滚动条继续加载数据,我觉得这种实现方式比较好。
1、首先找到DataGridView的滚动条事件
这个比较好找,dataGridViewX1_Scroll(object sender, ScrollEventArgs e)
2、获得DataGridView当前显示数据中的最后一行的行号
this.dataGridViewX1.Rows.GetLastRow(DataGridViewElementStates.Displayed);
3、定义变量
private int tc;//记录总数
private int pageSize;//每次读取记录数
private int pageNo;//分页号
4、第一次仅装载pageSize条记录,并给tc赋值
loadData();
5、此后当滚动到最后一条记录并且还存在未加载记录时,再次加载记录
int lastRowNum = this.dataGridViewX1.Rows.GetLastRow(DataGridViewElementStates.Displayed);
if (lastRowNum > (pageNo * pageSize - 5) && lastRowNum < tc)
loadOtherData();
6、往dataSet中追加记录
DataTable dt = new DataTable("Vendor");
adapter.Fill(dt);
//继续加载记录
foreach (DataRow row in dt.Rows)
{
dataSet1.Tables["Vendor"].ImportRow(row);
}
7、Sql Server 2005中分页
select top 100 * from (
select ROW_NUMBER() OVER (ORDER BY tb.cCusCode ASC) as ROWID,tb.cCusCode,tb.cCusName,tb.cCusAbbName,tb.cCusAddress,tb.cCusAccount,tb.cCusBank,tb.dCusDevDate
from Customer tb) aa
where (aa.ROWID >
(select isnull(max(ta.ROWID),0)
from (select top 100 ROW_NUMBER() OVER (ORDER BY tc.cCusCode ASC) AS ROWID,tc.cCusCode from Customer tc where 1=1 order by tc.cCusCode) ta))
order by aa.cCusCode
这里,由于cCusCode是字符型的,如果是自增的id,就不必这么麻烦通过ROW_NUMBER() OVER (ORDER BY tb.cCusCode ASC)获得行RowId了。
综上所述,结合分页和Scroll事件,可以实现分次加载数据。
当滚动条移动到第195条记录时,会自动加载下一个pageSize的记录
- DataGridView分次加载数据
- android 分次加载内容
- 读取Excel文件,加载数据到DataGridView
- ExtJS 4.1 下 TreePanel 的异步(分次)数据请求
- DataGridView加载数据和向数据库提交更改
- datagridview加载数据后默认不选中首行
- WinForm从objectcollection中加载数据到DataGridView
- DataGridview实现动态加载
- dataGridView动态加载行号
- hive分区分桶操作及加载数据
- 为什么分次批量删除一个带索引的大表里的数据会慢
- 層次的劃分
- 大文件分次读写
- 第十次ccf 分蛋糕
- 在 Windows 窗体 DataGridView 控件中实现实时数据加载的虚拟模式
- VS2010 c# winform中datagridview控件初次加载时去除默认选中第一行数据
- c#Datagridview从数据库重新加载数据和向数据库提交更改
- DataGridView的VirtualMode,在大容量数据加载时特别有用
- nyoj 拦截导弹
- 生物信息——连锁不平衡 Linkage Disequilibrium
- android 获取 system权限 .
- 类Test,定义对象时Test t()与Test t
- svn 操作
- DataGridView分次加载数据
- DOM4J介绍与代码示例
- C#中的where泛型约束
- 采用Service监听电话并录制
- ORA-00001: 违反唯一约束条件 (STDWX_DATA.PK_LIB_STD)
- JSP开发技术三——————开发模式与实例
- 突破思维定势
- STM32中外部中断与外部事件(转)
- Linux开机启动过程分析