博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET MVC5 实现分页查询
阅读量:5939 次
发布时间:2019-06-19

本文共 6639 字,大约阅读时间需要 22 分钟。

对于大量数据的查询和展示使用分页是一种不错的选择,这篇文章简要介绍下自己实现分页查询的思路。

分页需要三个变量:数据总量、每页显示的数据条数、当前页码。

//数据总量int dataCount;//每页显示的数据条数int pageDataCount;int pageNumber;

根据数据总量和每页显示的数据条数计算出总页数,根据当前页码和每页显示的数据条数计算出从数据库中读取数据的起始行号和结束行号。

//总页数int pageCount = (int)Math.Ceiling(dataCount/ (pageDataCount* 1.0));int startLine = (pageNumber - 1) * PageDataCount + 1;int endLine=startLine + PageDataCount - 1;

对于数据库的查询操作使用轻量级ORM框架来实现,具体代码如下:

protected IDbConnection CreateConnection(){    IDbConnection dbConnection = new SqlConnection(ConnectionString);    dbConnection.Open();    return dbConnection;}//获取数据库中数据的总条数public virtual int QueryDataCount(string tableName){    using (IDbConnection dbConnection = CreateConnection())    {        var queryResult = dbConnection.Query
("select count(Id) from " + tableName); if (queryResult == null || !queryResult.Any()) { return 0; } return queryResult.First(); }}public virtual IEnumerable
RangeQuery
(string tableName, int startline, int endline){ if (string.IsNullOrEmpty(tableName)) { throw new ArgumentNullException("表名不得为空或null"); } if (startline <= 0) { throw new ArgumentOutOfRangeException("起始行号必须大于0"); } if (endline - startline < 0) { throw new ArgumentOutOfRangeException("结束行号不得小于起始行号"); } using (IDbConnection dbConnection = CreateConnection()) { var queryResult = dbConnection.Query
("select top " + (endline - startline + 1) + " * from " + tableName + " where Id not in (select top " + (startline - 1) + " Id from " + tableName + " order by Id desc) order by Id desc"); if (queryResult != null && queryResult.Any()) { return queryResult; } } return null;}
View Code

 


绘制分页按钮

在App_Code文件夹中添加PageHelper.cshtml文件封装绘制按钮的代码,这里需要注意一点,使用VS发布站点时App_Code文件夹中的文件不会被打包,需要手动拷贝App_Code文件夹中的文件到站点中。

@*    amount:数据总数,count:每页显示的数据条数,redierctUrl点击按钮时的跳转链接    页面上需引用:bootstrap.min.css*@@helper CreatePaginateButton(int amount, int count, string redirectUrl){    
}
View Code

在前台页面中调用即可绘制分页按钮

@PageHelper.CreatePaginateButton(246, 10, "/usermanager/attentionlist/")

下面是几张分页按钮效果图:

 
 

对应的HTML代码:

 

以上是自己对于实现分页的思路,绘制分页按钮的方法过长,不是一个好的方案,若各位读者有更好的解决方案还望告知。文章最后推荐一个简单易用的分页组件。

 

版权声明

本文为作者原创,版权归作者所有。 转载必须保留文章的完整性,且在页面明显位置处标明。

如有问题, 请和作者联系。

你可能感兴趣的文章
win2008r2下安装sql2008r2初版
查看>>
IBM确定公司未来存储技术发展方向
查看>>
hello
查看>>
使用pt-online-schema-change 修复主从数据表数据不一致
查看>>
读《程序员到底怎么了?-》
查看>>
运维日常:群发邮件营销平台--EDM
查看>>
Linux jobs等前后台运行命令详解
查看>>
PV(page view)
查看>>
宏定义与const的区别
查看>>
java中abstract,interface,final,static的区别
查看>>
网站的线下活动如何组织
查看>>
Mac 常用快捷键
查看>>
阿里云CentOS7安装Oracle11GR2
查看>>
多线程之线程同步
查看>>
图片进行base64编解码方法
查看>>
外链起到引导、推广排名的作用
查看>>
python常用的字串格式化选项
查看>>
Lock wait timeout exceeded; try restarting......
查看>>
Servet映射规范翻译
查看>>
手机APP新“战场” 手机银行APP成了银行业的定时炸弹?
查看>>