黑马程序员技术交流社区

标题: 【Winform,DataGridView 用户控件分页】,该怎么实现 [打印本页]

作者: u010209195    时间: 2014-3-16 12:56
标题: 【Winform,DataGridView 用户控件分页】,该怎么实现

最近自己在练习Winform,用到DataGridView绑定数据,后来感觉数据太多会显示滚动条,很麻烦,想定义一个类似Web方面的分页控件【最好定义成用户控件,这样可用性比较高】,

在网上也搜了分页的用户控件,整体思路还是不明确,有的说需要用到存储过程,有的没有,现在脑子很乱,没有具体的思路了

我要实现的用户控件的格式附件所示:

ceaec3cec3fdfc035a882b02d63f8794a5c2266e.png (77.8 KB, 下载次数: 74)

用户控件分页布局

用户控件分页布局

作者: u010209195    时间: 2014-3-16 12:57
具体思路该怎么写呢?
我现在知道需要定义:
int PageSize=0; //每页显示条数
int nMax = 0; //总记录数
int pageCount = 0; //页数=总记录数/每页显示行数
intpageCurrent = 0;//当前页号
intnCurrent = 0;//当前记录行

后面就不清楚该怎么写了,从数据库从读取的DataSet直接传过来然后分页显示,还是什么?完全迷了,以前都是直接传给DataGridView的DataSource,就可以显示了;
作者: xydsdsr    时间: 2014-3-16 13:04
分页的基本思路 就是用到了存储过程执行动态拼接的Sql语句 每翻一次页 根据相应的参数查询一次 在绑定数据源
作者: u010209195    时间: 2014-3-16 13:11
1:现在疑问是从数据库中读取的数据怎么通过分页实现?是翻一页再重新通过SQL语句读取一遍数据库吗?大数据不就效率很低了?

现在思路很模糊,。。。。。。
作者: xydsdsr    时间: 2014-3-16 13:18
我觉得效率不会低 比如分页 一页五条 那每次只查询5条数据
作者: xydsdsr    时间: 2014-3-16 13:22
分页从数据库读
select * from
(select *,rn = row_number() over(order by 根据那一列进行排序) from 哪一张表) as t
where t.rn between (当前页数-1)*每页条数+1 and 当前页数*每页条数

rn是根据方法生成的类似于自动编号的东西




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2