讨论一个分页的思路(有高手没)

bluecyclone 2007-03-29 06:10:06
能不能部统计总记录数,进行分页显示?
...全文
536 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
seaer06 2007-04-03
  • 打赏
  • 举报
回复
1\读取数据总数.
2\计算能分几页.
3\通过SQL语句.读取数据.
4\通过dataadapter.fill(dataset,startno,count,"tablename");
来分页
bluecyclone 2007-04-03
  • 打赏
  • 举报
回复
自己笨了一把,哈哈..
bluecyclone 2007-04-03
  • 打赏
  • 举报
回复
思路解决了...
回头有时间我把方案拿出来哈...
感谢w59879213() ...
dcbr4 2007-04-02
  • 打赏
  • 举报
回复
那你就返回一个值指示是否还有下一页,有就显示下一页,没有就不显示了,这样总页数就不能显示了
Jeremiah 2007-04-02
  • 打赏
  • 举报
回复
如果是30W条记录呢???还用.net控件,一下子读出来再分页????

客户端谁的机器能受得了这些个啊...

我感觉如果翻到最后一页的下一页应该就是null了,每一次翻页之前记录一下当前的页数,如果为空则返回前一页就成...
bluecyclone 2007-04-02
  • 打赏
  • 举报
回复
我感觉这样可以实现,就是到最后一页的时候,不容易判断。

前提:用存储过程分页的情况下,每次只读取相应的记录。假如说,每页10条数据,前面的页,可以用是否等于10条来判断,最后一页如果刚好等于十条,这个就不好判断了....


谁有更好的思路,欢迎大家来讨论。
Xpengfee 2007-03-29
  • 打赏
  • 举报
回复
不知道总页数,怎么知道要分多少页??
webdiyer 2007-03-29
  • 打赏
  • 举报
回复
不知道记录总数也可以分页,问题是这样你就无法知道到底有多少页,显示多少个分页导航按钮,显示多了用户点了后面的导航按钮后打开的就是没有数据的页面,显示少了后边的数据又显示不出来,所以获取记录总数还是必需的,至于生成分页导航链接,可以试试我写的这个免费分页控件:http://www.webdiyer.com
hy_lihuan 2007-03-29
  • 打赏
  • 举报
回复
大家要想到 你们用的是.net 黑多东西是封装好了的
即使自己分业也只需要一次查找 把数据放到数据放到数据集里面 如dataset 要种数或其他数据操作就不用在去连数据库了
如求总的记录数 只需dataset.table["表名"].count属性就知道了

这位:你弄错了一件事情,那就是分页不是为了好看,如果要好看直接用DataGrid的分页就好了;而是在数据量巨大的情况下(检索出几万条数据),可是只读取我们能够看到的数据,减少内存的开销;所以使用分页以后在dataset中的仅仅就一个页面的数据量!
xiaoliangwh 2007-03-29
  • 打赏
  • 举报
回复
up
coolbyefish 2007-03-29
  • 打赏
  • 举报
回复
大家要想到 你们用的是.net 黑多东西是封装好了的
即使自己分业也只需要一次查找 把数据放到数据放到数据集里面 如dataset 要种数或其他数据操作就不用在去连数据库了
如求总的记录数 只需dataset.table["表名"].count属性就知道了
hertcloud 2007-03-29
  • 打赏
  • 举报
回复
读取 某页的数据 是不需要总数
一般 分页算法 都会 读取 总数
这个是因为 你显示出来的 分页按钮 需要知道 总页数 每页大小 才能统计有多少页啊

分页算法
http://blog.csdn.net/hertcloud/category/281167.aspx
  • 打赏
  • 举报
回复
不过这大概在你做比较费时的人工智能搜索算法的结果展示的时候才会非常需要。
io135 2007-03-29
  • 打赏
  • 举报
回复
不对吧, 楼上, 那以你所说, 怎么得到总页数呢?

其实好象有个Datasetsource类是专门设置分页的.

以前我不知道.嫌DataGrid的分页功能不好用.就自己写了一个!

其实分页书不难,难就难在把页码数和相应的记录对应起来. 有点麻烦!

先判断是不是第一页, 如果是的话,再判断是否小于分页时你定的常量值,如果小于的话,则直接游历完. 如果否的话, 则直接游历到你定义的那么常量值的位置.

其他的页更麻烦,因为牵涉到前一页,后一页的问题,反正写起来很麻烦!
seiya_guan 2007-03-29
  • 打赏
  • 举报
回复
SELECT TOP 页大小 * FROM TestTable WHERE (ID NOT IN
(SELECT TOP 页大小*页数 id FROM 表 ORDER BY id))
ORDER BY ID
这样符合你的要求。
  • 打赏
  • 举报
回复
“然后再遍历一页的记录” ->

应该是遍历一页上显示信息所需要的记录。例如一页显示20行记录,但是需要判断后边5页是否有记录,就要再将游标 MoveNext(100) 条记录。
io135 2007-03-29
  • 打赏
  • 举报
回复
我写过,步骤如下:

1: 得到总记录数, 这个很好办.
2: 用一个常量,表明每页需要显示的记录. 用一个变量得到分页后的页数.
3: 用页数 = 记录数/常量 ,如果有余数 ,则页数+1. 也就是取模.

然后下一步就是具体把页数跟 ,记录对应起来!
  • 打赏
  • 举报
回复
按理论说,分页的算法根本就不需要知道总记录数。

仅需要从查询结果的开头开始遍历,忽略在前面页面的记录(不需要读记录),然后再遍历一页的记录,然后就结束,后边的记录不需要读取。获取总记录数需要多花许多时间。

asp.net控件的分页功能默认也都不显示总记录、总页数。显示总记录数或者总页数,是一些控件给你创意出来的高级的功能。
HenryXiaoY 2007-03-29
  • 打赏
  • 举报
回复
直接用个GridView就可以了吧。少写很多代码
phisy 2007-03-29
  • 打赏
  • 举报
回复
count(*)最好是使用Count(ID)
加载更多回复(4)

62,272

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧