• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

ASP.NET MVC5 实现分页查询的示例代码

asp 搞代码 4年前 (2022-01-03) 19次浏览 已收录 0个评论

本篇文章主要介绍了ASP.NET MVC5 实现分页查询的示例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

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

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

 //数据总量 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框架Dapper来实现,具体代码如下:

 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<div style="color:transparent">来源gaodai.ma#com搞#代!码网</div>"); } 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; } 

绘制分页按钮

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

 @* amount:数据总数,count:每页显示的数据条数,redierctUrl点击按钮时的跳转链接 页面上需引用:bootstrap.min.css *@ @helper CreatePaginateButton(int amount, int count, string redirectUrl) { <div id="pagenumber" style="text-align:center;width:84%"> <nav style="text-align:center"> <ul class="pagination"> <li>首页</li> @{ int pageNumber = (int)Math.Ceiling(amount / (count * 1.0)); pageNumber = pageNumber  pageNumber) ? pageNumber : selectedIndex + 1; var r=Request.Cookies[""]; if (pageNumber > BUTTON_COUNT) { <li>上一页</li> for (int i = 1; i = LEFT_BUTTON_COUNT && selectedIndex%LEFT_BUTTON_COUNT==0 && i <= LEFT_BUTTON_COUNT) { <li>@selectedIndex</li> int step = selectedIndex; int tag = 0; for (i = 1; i  pageNumber - RIGHT_BUTTON_COUNT) { if (i <= LEFT_BUTTON_COUNT) { i = LEFT_BUTTON_COUNT + 1; } break; } <li>@tag</li> } } else if (i <= LEFT_BUTTON_COUNT && selectedIndex<LEFT_BUTTON_COUNT) { <li>@i</li> } else if (i LEFT_BUTTON_COUNT) { int step = selectedIndex / LEFT_BUTTON_COUNT; int tag = 0; <li>@(step*LEFT_BUTTON_COUNT)</li> for (i = 1; i  pageNumber - RIGHT_BUTTON_COUNT) { if (i <= LEFT_BUTTON_COUNT) { i = LEFT_BUTTON_COUNT + 1; } break; } <li>@tag</li> } } //绘制按钮分隔符右侧按钮 if (i==BUTTON_COUNT-1) { <li>@(pageNumber-1)</li> } else if(i==BUTTON_COUNT) { <li>@pageNumber</li> } //绘制按钮分隔符 else if (i >= BUTTON_COUNT -RIGHT_BUTTON_COUNT) { <li><span>@BUTTON_SEPARATOR</span></li> } } <li>下一页</li> } else { for (int i = 1; i <= pageNumber; i++) { <li>@i</li> } } } <li>末页</li></ul></nav></div> } 

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

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

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

对应的HTML代码:

以上就是ASP.NET MVC5 实现分页查询的示例代码的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:ASP.NET MVC5 实现分页查询的示例代码

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址