A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fcyan86 中级黑马   /  2013-6-2 12:21  /  1083 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 fcyan86 于 2013-6-3 11:48 编辑

一般对数据过行分页时,是在数据库中过行分页再取出数据,还是将数据取出后再分页;各有什么优点;.net中的数据源控件是怎样处理分页的

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

3 个回复

倒序浏览
在实现分页上 我是仅取出该取的数据 代码如下(其实代码可以写的灵活一点 给个参数 是否只取当前页的数据)
  1. /// <summary>
  2. /// 某张表的数据读取
  3. /// </summary>
  4. /// <param name="strWhere">查询条件</param>
  5. /// <param name="start">数据导出开始点</param>
  6. /// <param name="limit">页面限制显示条数</param>
  7. /// <param name="strOrder">排序字段</param>
  8. /// <param name="current">是否只要当前页的数据</param>
  9. /// <returns></returns>
  10. public DataSet GetClientServiceRecords(string strWhere, int start, int limit, string strOrder, bool current)
  11. {
  12. var strSql = new StringBuilder();
  13. var sort = "";
  14. if (!string.IsNullOrEmpty(strOrder))
  15. {
  16. sort = "" + strOrder;
  17. }
  18. strSql.Append(" 这里是sql 语句");
  19. if (strWhere.Trim() != "")
  20. {
  21. strSql.Append(" WHERE " + strWhere + "\r\n");
  22. }
  23. strSql.Insert(0, "(\r\n");
  24. strSql.Append(")\r\n");
  25. strSql.Insert(0, "WITH TEMP AS");
  26. strSql.Append("SELECT * FROM TEMP\r\n");
  27. if (current)
  28. {
  29. strSql.Append(string.Format("WHERE ROW BETWEEN {0} AND {1}\r\n", start, limit));
  30. }
  31. strSql.Append("SELECT COUNT(1) FROM dbo.V_ClientServiceRecords\r\n");
  32. if (strWhere.Trim() != "")
  33. {
  34. strSql.Append("WHERE " + strWhere);
  35. }
  36. return SQLServerHelper.Query(strSql.ToString());
  37. }
复制代码
这个代码 不仅可以取出本页的数据 还可以取出数据的总数


评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
两种分页方式都存在,
在数据库中分页再取出的方式可以减小服务器压力,如果将数据取出再分页,你每一次翻页都会将数据表里的数据全部遍历一次这样很浪费资源。如果非要说后者有什么优点,我觉得应该是实现起来比较简单。

一般情况下,如果是开发像新闻网、淘宝这样浏览量大的网站,肯定得用前者
如果是是开发公司内部的管理系统可以考虑使用后者吧,这也是b/s开发的两个大的方向

asp.net的数据控件有两部分组成   
即:数据源控件(用来提供数据,比如ObjectDataSourse)    数据绑定控件(用于显示数据,比如:ListView)
高效分页(即先分页后取出)是在数据源控件部分实现
后者是在数据绑定控件实现

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马