.NetMvc之手写控件分页

一、业务描述

        以手写页面控件的方式,实现数据列表分页。

二、开发环境

        Visual Studio 2019,Sql Server Express 2018

三、数据模型

        

四、导入实体数据模型

        Visual Studio 2019→创建新项目→ASP.NET Web应用程序(.NET Framework)→MVC→  右键“添加”→“新建项”→“ADO.NET实体数据模型”→“来自数据库的EF设计器”→连接数据库→勾选数据库中的表→勾选“确定所声称对象名称的单复数形式”→添加数据注解

    public partial class Product
    {
        public int id { get; set; }
        [DisplayName("产品名称")]
        [Required]
        public string name { get; set; }
        [DisplayName("生产日期")]
        [Required]
        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
        public System.DateTime pDate { get; set; }
        [DisplayName("生产人")]
        [Required]
        public string pWork { get; set; }
        [DisplayName("价格")]
        [Required]
        [DataType(DataType.Currency)]
        public decimal price { get; set; }
    }

五、后台分页

  1. ProductController,数据库上下文
            //获取数据库上下文     
            private NetDBEntities dbContext = new NetDBEntities();
  2. Page Action
            /// <summary>
            /// 分页
            /// </summary>
            /// <param name="pageIndex">页码</param>
            /// <param name="pageSize">页容量</param>
            /// <returns></returns>
            public ActionResult Page(int pageIndex = 1, int pageSize = 5)
            {
                //后台数据校验
                pageIndex = pageIndex < 1 ? 1 : pageIndex;
                pageSize = pageSize < 1 ? 5 : pageSize;
    
                //定义数据集规则
                var products = dbContext.Products.Select(p => p);
    
                //搜索功能
                
    
                //将 页码 以弱类型方式向页面传值 
                ViewBag.pageIndex = pageIndex;
                //将 每页条数 以弱类型方式向页面传值 
                ViewBag.pageSize = pageSize;
    
                //总记录数 
                var total = products.Count();
                //将 总记录数 以弱类型方式向页面传值 
                ViewBag.total = total;
    
                //总页数 
                var pageCount = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(total) / pageSize));
                //将 总页数 以弱类型方式向页面传值 
                ViewBag.pageCount = pageCount;
    
                //排序功能
                products = products.OrderBy(p => p.id);
    
                //根据页面大小和页码计算实体集合 
                products = products.Skip((pageIndex - 1) * pageSize).Take(pageSize);
    
                //将实体集合以强类型方式向页面传值 
                return View(products.ToList());
            }

六、页面分页

  1. 添加视图
  2. 定义页面变量
    @{
        //页码
        int pageIndex = ViewBag.pageIndex;
        //页容量
        int pageSize = ViewBag.pageSize;
        //序号
        int index = (pageIndex - 1) * pageSize + 1;
        //总记录数
        int total = ViewBag.total;
        //总页数
        int pageCount = ViewBag.pageCount;
        //是否有上一页
        bool bPrev = pageIndex > 1;
        //是否有下一页
        bool bNext = pageIndex < pageCount;
    }
  3. 分页导航控件
    <span> 共 @total 条数据</span> &nbsp;&nbsp;&nbsp;&nbsp;
    @Html.ActionLink("上一页", "page", new { pageIndex = pageIndex - 1, pageSize = pageSize }, 
        new { @class = bPrev ? "btn btn-default" : "btn btn-default disabled" })
    <span> 第 @pageIndex 页 / 共 @pageCount 页 </span>
    @Html.ActionLink("下一页", "page", new { pageIndex = pageIndex + 1, pageSize = pageSize }, 
        new { @class = bNext ? "btn btn-default" : "btn btn-default disabled" })
  4. 为表格添加序号
    <table class="table">
        <tr>
            <th>序号</th>
        </tr>
        @foreach (var item in Model)
        {
    <tr>
        <td>
            @(index++)
        </td>
    </tr>
        }
    </table>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勇 士 Teacher

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值