一、页面代码,分为三部分,一是查询条件部分,二是数据部分,二是页码条

  1. <div id="ticketoutquery">
  2. <table>
  3. <tr>
  4. <td style="width: 70px; text-align: right">
  5. 订票单号:
  6. </td>
  7. <td style="text-align: left">
  8. @Html.TextBoxFor(s => s.TicketNo)
  9. </td>
  10.  
  11. <td style="width: 70px; text-align: right">
  12. 出票时间:
  13. </td>
  14. <td>
  15. @Html.TextBoxFor(s => s.CreateDateStart, new { @class = "datepicker" })
  16. </td>
  17. <td>
  18. @Html.TextBoxFor(s => s.CreateDateEnd, new { @class = "datepicker" })
  19. </td>
  20. <td style="width: 70px; text-align: right">
  21. <input type="button" id="tbQueryticketout" onclick="doQueryticketoutProcessing(1)" class="btn btn-primary"
  22. value="查询" />
  23. </td>
  24. </tr>
  25. </table>
  26. </div>
  27. <div id="TaskList">
  28. @Html.Raw(@ViewData["TaskLists"])
  29. </div>
  30.  
  31. <div class="page_nav" id="pageBar" style="margin:0,auto">
  32. @Html.Raw(OilDigital.TicketSys2.Web.PageBarHelper.GetPagaBar((int)ViewData["PageIndex"], (int)ViewData["PageCount"], (int)ViewData["recoredCount"]))
  33. </div>

二、页面条码类封装如下:

  1. public class PageBarHelper
  2. {
  3. public static string GetPagaBar(int pageIndex, int pageCount, int recoredCount)
  4. {
  5. if (pageCount == 1)
  6. {
  7. return string.Empty;
  8. }
  9. int start = pageIndex - 5;//计算起始位置.要求页面上显示10个数字页码.
  10. if (start < 1)
  11. {
  12. start = 1;
  13. }
  14. int end = start + 9;//计算终止位置.
  15. if (end > pageCount)
  16. {
  17. end = pageCount;
  18. //重新计算一下Start值.
  19. start = end - 9 < 1 ? 1 : end - 9;
  20. }
  21. StringBuilder sb = new StringBuilder();
  22. if (pageIndex > 1)
  23. {
  24. //sb.AppendFormat("<a href='NewList.aspx?pageIndex={0}'>上一页</a>", pageIndex - 1);、
  25. sb.AppendFormat("<a href='#' onclick='doQueryticketoutProcessing({0})'>上一页</a>", pageIndex - 1);
  26. }
  27. for (int i = start; i <= end; i++)
  28. {
  29. if (i == pageIndex)
  30. {
  31. sb.Append(i);
  32. }
  33. else
  34. {
  35. sb.AppendFormat("<a href='#' onclick='doQueryticketoutProcessing({0})'>{0}</a>", i);
  36. }
  37. }
  38. if (pageIndex < pageCount)
  39. {
  40. sb.AppendFormat("<a href='#' onclick='doQueryticketoutProcessing({0})'>下一页</a>", pageIndex + 1);
  41. }
  42. if (recoredCount >0)
  43. {
  44. sb.AppendFormat(" <span>每页10条,共{0}条</span>", recoredCount);
  45. }
  46. return sb.ToString();
  47. }
  48. }

三、点击查询后会触发doQueryticketoutProcessing方法

  1. function doQueryticketoutProcessing(pageIndex) {
  2. var ticketNoval = $('#TicketNo').val(); //订票单号
  3. var CreateDateStart = $('#CreateDateStart').val(); //出票时间
  4. var CreateDateEnd = $('#CreateDateEnd').val(); //出票时间
  5. if (pageIndex == null || pageIndex == undefined || pageIndex <1)
  6. {
  7. pageIndex = 1;
  8. }
  9. var type = $("#type").val();
  10. showMsg();
  11. $.ajax({
  12. type: "post",
  13. url: approvalUrl + "/GetProcessingTicketoutTaskListByQuery",
  14. data: { ReceiveNumber: ticketNoval, createDateStart: CreateDateStart, createDateEnd: CreateDateEnd, type: type, pageIndex: pageIndex },
  15. datatype: "html",
  16. success: function (data) {
  17. hideMsg();
  18. if (data.ticketList == "") {
  19. $("#taskList").html("<h5>暂时无任务列表!</h5>");
  20. } else {
  21. $("#TaskList").empty();
  22. $("#TaskList").html(data.ticketList);
  23. }
  24. $("#pageBar").html(data.pageBar);
  25. },
  26. error: function (req, status, error) {
  27. hideMsg();
  28. console.log("获取订票单失败,原因如下:\r\n" + error);
  29. }
  30. });
  31. }

三、后台除了查询的条件外,分页的参数主要是pageIndex 和 pageSize.   传入后台后返回总记录数 recoredCount   和 总页数pageCount   下面给出分页的核心代码

  1. public static IQueryable<Ticket> GetByStateAndDateTime(string ReceiveNumber, string ticketState, DateTime startDate, DateTime endDate,int pageIndex,int pageSize)
  2. {
  3. IQueryable<Ticket> tickets = dao.GetQueryable().Where(s => s.StateCode == "已出票" && s.CreatedTime > startDate && s.CreatedTime < endDate);
  4. if (!string.IsNullOrEmpty(ReceiveNumber))
  5. {
  6. tickets = tickets.Where(s => s.ReceiveNumber == ReceiveNumber.Trim());
  7. }
  8. if(pageIndex!=0)
  9. {
  10. tickets = tickets.OrderBy(s=>s.CreatedTime).Skip((pageIndex - 1) * pageSize).Take(pageSize);
  11. }
  12. return tickets;
  13.  
  14. }
  1. pageCount计算方法
  1. pageCount = Convert.ToInt32(Math.Ceiling((double)recoredCount / pageSize));

四、分页控件的css样式如下:

  1. page_nav{clear:both; padding:15px 0; color:#666; font:normal 12px/24px Arial; text-align:center;}
  2. .page_nav a{display:inline-block; height:22px; margin:0 2px; padding:0 8px; text-decoration:none; border:solid 1px #dbe5ee; -moz-border-radius:2px; -webkit-border-radius:2px; -khtml-border-radius:2px; border-radius:2px; background:#fff; color:#333; font:normal 12px/22px Arial, Helvetica, sans-serif; cursor:pointer;}
  3. .page_nav strong{display:inline-block; height:24px; margin:0 3px; padding:0 8px; border:none; -moz-border-radius:2px; -webkit-border-radius:2px; -khtml-border-radius:2px; border-radius:2px; background:#C00; color:#fff; font-weight:normal; line-height:24px; text-decoration:none;}
  4. .page_nav a:hover,
  5. .page_nav a.on{height:24px; margin:0 3px; border:none; background:#C00; color:#fff; line-height:24px; text-decoration:none;}
  6. .page_nav a.select{cursor:default;}
  7. .page_nav .view_all{display:block; text-align:center;}
  8. .page_nav .view_all a{height:auto; margin:0; padding:0; border:none; color:#06c; line-height:24px;}
  9. .page_nav .view_all a:hover{height:auto; margin:0; padding:0; background:none;}

注意事项:

必须配置nhibernate如下:有些是.MsSql2000Dialect 在使用分页的方法时是会报错的。

<property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>

C# MVC+NHibernate 分页的更多相关文章

  1. Nhibernate分页测试续

    Nhibernate分页测试续(附源码) 接着上一篇Nhibernate分页测试,最近一直在接触Nhibernate,接触的越多.了解越深,越是感觉他的强大,很多功能都封装的很好,对数据操作是那么的简 ...

  2. “MVC+Nhibernate+Jquery-EasyUI” 信息发布系统 第六篇(图片新闻的添加以及带分页的静态页的生成)

    “MVC+Nhibernate+Jquery-EasyUI” 信息发布系统 第六篇(图片新闻的添加以及带分页的静态页的生成) 一.这篇文章主要是要实现:图片新闻的添加,无刷新图片的上传,以及添加新闻静 ...

  3. “MVC+Nhibernate+Jquery-EasyUI” 信息发布系统 第四篇(用户管理功能的实现)

    “MVC+Nhibernate+Jquery-EasyUI” 信息发布系统 第四篇(用户管理功能的实现) 一.前三篇的内容是否对您有帮助呢?如果有的话,请您继续关注这篇吧,这篇主要是实现”用户管理“的 ...

  4. 基于存储过程的MVC开源分页控件--LYB.NET.SPPager

    摘要 现在基于ASP.NET MVC的分页控件我想大家都不陌生了,百度一下一大箩筐.其中有不少精品,陕北吴旗娃杨涛大哥做的分页控件MVCPager(http://www.webdiyer.com/)算 ...

  5. NHibernate分页

    转载:http://www.cnblogs.com/tenghoo/archive/2011/02/14/1954393.html NHibernate专题:http://kb.cnblogs.com ...

  6. Mvc自定义分页控件

    MVC开发分页常常使用第三方控件,生成的分页HTML带有版权申明,虽然免费,但是总有的别扭.于是,某日,楼主闲来蛋疼,折腾了个自定义分页控件: 先来展示下效果图: 1>当分页不超过10页的时候, ...

  7. 年底小回顾(MVC+NHibernate+Jquery+JqueryUI——网站)

    1.附:利用MVC+NHibernate+Jquery+JqueryUI这些技术可以做出一个比较好的前台+后台网站.下面是本人对这些技术的笔记,作为私人年底小结吧.呵呵 好久没写文章了,感觉下不了笔吐 ...

  8. MVC简单分页

    对Car汽车表分页 实现简单分页,放在这里方便查看回顾,自定义每页几条有点问题,有待完善······ 1.新建mvc项目 2.添加linq to sql 数据库连接 3.添加CarBF类 using ...

  9. MVC快速分页

    .NET手记-ASP.NET MVC快速分页的实现   对于Web应用,展示List是很常见的需求,随之而来的常见的分页组件.jQuery有现成的分页组件,网上也有着大量的第三方分页组件,都能够快速实 ...

  10. MVC自定义分页

    MVC自定义分页 之前我发表了一篇MVC无刷新分页的文章,里面用的是MvcPager控件,但是那个受那个控件限制,传值只能用PagedList,各方面都受到了限制,自由度不够高,现在还是做MVC无刷新 ...

随机推荐

  1. Axure 自定义元件库

    点击文件 -> 新建元件库 可以添加多个元件,并将期重命名 保存元件库 新建页面 添加元件,选择自建的元件库 导入后就会发现我的原件库 这样就可以使用我们自定义的元件库了

  2. linux tar解压命令总结

    把常用的tar解压命令总结下,当作备忘: -c:建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可 ...

  3. Clion 中 Rust 插件开启 WSL 调试

    Rust Linux 配置 wsl 中执行命令: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 按照可能会卡住,需要在本 ...

  4. springboot线程池的使用方式1

    线程池的创建方法 总共有 7 种,但总体来说可分为 2 类: 一类是通过 ThreadPoolExecutor 创建的线程池: 另一个类是通过 Executors 创建的线程池. 1. Executo ...

  5. 活动回顾|阿里云 Serverless 技术实战与创新上海站回放&PPT下载

    5月27日"阿里云 Serverless 技术实战与创新"上海站圆满落幕.活动现场邀请了来自阿里云 一线技术专家,分享当前 Serverless 趋势和落地实践过程中的挑战和机遇: ...

  6. kafka搭建二、集群搭建

    系列导航 一.kafka搭建-单机版 二.kafka搭建-集群搭建 三.kafka集群增加密码验证 四.kafka集群权限增加ACL 五.kafka集群__consumer_offsets副本数修改 ...

  7. mongodb导入本地json文件

  8. Docker 魔法解密:探索 UnionFS 与 OverlayFS

    本文主要介绍了 Docker 的另一个核心技术:Union File System.主要包括对 overlayfs 的演示,以及分析 docker 是如何借助 ufs 实现容器 rootfs 的. 如 ...

  9. freeswitch查看所有通道变量

    概述 freeswitch 是一款好用的开源软交换平台. 实际应用中,我们经常需要对fs中的通道变量操作,包括设置和获取,set & get. 但是,fs中有众多的内部定义通道变量,也有外部传 ...

  10. wxpython窗体之间传递参数

    如何界面存在frame1与frame2,通过frame1打开页面frame2,并将frame2的值传递给frame1 可以使用回调函数传值参考具体代码如下: # -*- coding: utf-8 - ...