黑马程序员技术交流社区
标题:
关于数据分页
[打印本页]
作者:
fcyan86
时间:
2013-6-2 12:21
标题:
关于数据分页
本帖最后由 fcyan86 于 2013-6-3 11:48 编辑
一般对数据过行分页时,是在数据库中过行分页再取出数据,还是将数据取出后再分页;各有什么优点;.net中的数据源控件是怎样处理分页的
作者:
彭家贰小姐
时间:
2013-6-2 13:06
在实现分页上 我是仅取出该取的数据 代码如下(其实代码可以写的灵活一点 给个参数 是否只取当前页的数据)
/// <summary>
/// 某张表的数据读取
/// </summary>
/// <param name="strWhere">查询条件</param>
/// <param name="start">数据导出开始点</param>
/// <param name="limit">页面限制显示条数</param>
/// <param name="strOrder">排序字段</param>
/// <param name="current">是否只要当前页的数据</param>
/// <returns></returns>
public DataSet GetClientServiceRecords(string strWhere, int start, int limit, string strOrder, bool current)
{
var strSql = new StringBuilder();
var sort = "";
if (!string.IsNullOrEmpty(strOrder))
{
sort = "" + strOrder;
}
strSql.Append(" 这里是sql 语句");
if (strWhere.Trim() != "")
{
strSql.Append(" WHERE " + strWhere + "\r\n");
}
strSql.Insert(0, "(\r\n");
strSql.Append(")\r\n");
strSql.Insert(0, "WITH TEMP AS");
strSql.Append("SELECT * FROM TEMP\r\n");
if (current)
{
strSql.Append(string.Format("WHERE ROW BETWEEN {0} AND {1}\r\n", start, limit));
}
strSql.Append("SELECT COUNT(1) FROM dbo.V_ClientServiceRecords\r\n");
if (strWhere.Trim() != "")
{
strSql.Append("WHERE " + strWhere);
}
return SQLServerHelper.Query(strSql.ToString());
}
复制代码
这个代码 不仅可以取出本页的数据 还可以取出数据的总数
作者:
胡章诚
时间:
2013-6-2 13:30
两种分页方式都存在,
在数据库中分页再取出的方式可以减小服务器压力,如果将数据取出再分页,你每一次翻页都会将数据表里的数据全部遍历一次这样很浪费资源。如果非要说后者有什么优点,我觉得应该是实现起来比较简单。
一般情况下,如果是开发像新闻网、淘宝这样浏览量大的网站,肯定得用前者
如果是是开发公司内部的管理系统可以考虑使用后者吧,这也是b/s开发的两个大的方向
asp.net的数据控件有两部分组成
即:数据源控件(用来提供数据,比如ObjectDataSourse) 数据绑定控件(用于显示数据,比如:ListView)
高效分页(即先分页后取出)是在数据源控件部分实现
后者是在数据绑定控件实现
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2