zoukankan      html  css  js  c++  java
  • 【MVC】使用MvcPager进行分页

    1、添加引用: mvcPager

      版本高的提供的功能也更多。

      注:下载了第一个,但是里面的一些字段是只读的。(eg:PagedList<T> .TotalItemCount)这是不符合的。

    2、添加控制器

      在控制器中添加方法 MvcPagerAjax(),从db获取数据

    /// <summary>
            /// 分页,局部刷新。。直接请求该action
            /// </summary>
            /// <param name="pageIndex">此参数很重要,由分页ajax中传过来(PageIndexParameterName)</param>
            /// <param name="pageSize"></param>
            /// <returns></returns>
            public ActionResult MvcPagerAjax(int pageIndex = 1)
            {
                int pageSize = 10;  //每页的数据条数
                List<MovieDB> lists = db.Movies.ToList();
                int counts = lists.Count;
                PagedList<MovieDB> lst = lists.AsQueryable().ToPagedList(pageIndex, pageSize);
                lst.TotalItemCount = counts;
                lst.CurrentPageIndex = pageIndex;
                if (Request.IsAjaxRequest())
                {
                    return PartialView("PartailViewMList", lst);  //分页,异步请求
                }
                else
                {
                    return View("Mlist", lst); //初始加载时,不是ajax
                }
            }
    View Code 

    3、添加主页面

      Mlist.cshtml

    @model PagedList<MVCTest.Models.MovieDB>
    @using Webdiyer.WebControls.Mvc
    
    @{
        ViewBag.Title = "MList";
    }
    
    @{ 
        Html.RenderPartial("PartailViewMList", Model);
    }
    
    @*使用Ajax分页模式时,必须用Html.RegisterMvcPagerScriptResource方法注册客户端脚本,否则无法正常分页;*@
    @*需要再_Layout中加入 @RenderSection("scripts", required: false)*@
    @section Scripts{@{Html.RegisterMvcPagerScriptResource();}}
    View Code

    4、添加分部页

    PartailViewMList.cshtml

      名称 PartailViewMList。就是controller中需要ajax返回的页面return PartialView("PartailViewMList", lst);

      分页控件:http://www.webdiyer.com/mvcpager/demos/applycss/ 可以在官网上找各种样式

    视图部分

    @model PagedList<MVCTest.Models.MovieDB>
    @using Webdiyer.WebControls.Mvc;
    
    <div id="divList">
        <table>
            <tr>
                <th>ID</th>
                <th>Title</th>
                <th>Director</th>
                <th>Date</th>
            </tr>
            @if (Model != null && Model.Count > 0)
            {
                foreach (var item in Model.ToList())
                {
                    <tr>
                        <td>@item.ID</td>
                        <td>@item.Title</td>
                        <td>@item.Director </td>
                        <td>@item.Date</td>
                    </tr>
                }
            }
        </table>
    
        <div class="row" style="height:80px">
            <div class="col-md-2" style="margin:20px 0">
                共有 @Model.TotalItemCount 条记录 @Model.CurrentPageIndex/@Model.TotalPageCount
            </div>
            <div class="col-md-6">
                @Ajax.Pager(Model, new PagerOptions
           {
               //PrevPageText = "上页",
               //NextPageText = "下页",
               //FirstPageText = "首页",
               //LastPageText = "尾页",
               PageIndexParameterName = "pageIndex",  //此参数传入controller
               NumericPagerItemCount = 5,  //显示几个分页号码数据(可以控制省略号…的显示)
               ContainerTagName = "ul",  //分页标签
               CssClass = "pagination",  //分页样式,位于bootstrap.css中
               CurrentPagerItemTemplate = "<li class="active"><a href="#">{0}</a></li>",
               DisabledPagerItemTemplate = "<li class="disabled"><a>{0}</a></li>",
               PagerItemTemplate = "<li>{0}</li>",
               Id = "bootstrappager",
               //PageIndexBoxId = "pageIndexBox", //下拉框
               //GoToButtonId = "goToBtn",   //不设置的话,则页索引文本或下拉框中的值改变时即自动实现分页跳转
               PageIndexBoxId = "pageIndexBox2",  //文本输入框
               GoToButtonId = "goToBtn2"  //不设置的话,则页索引文本或下拉框中的值改变时即自动实现分页跳转
           }, new MvcAjaxOptions { UpdateTargetId = "divList" })
                @*或者 }).AjaxOptions(a => a.SetUpdateTargetId("divList"))*@
            </div>
            <div class="col-md-4">
                <div class="input-group" style="120px;margin:20px 0">
                    @*<select id="pageIndexBox" class="form-control input-sm"></select>
                        <span class="input-group-btn"><button class="btn btn-primary btn-sm" id="goToBtn">跳转</button></span>*@
                    <input type="text" id="pageIndexBox2" class="form-control input-sm" />
                    <span class="input-group-btn"><button class="btn btn-primary btn-sm" id="goToBtn2">跳转</button></span>
                </div>
            </div>
        </div>
        @*说明:要为MvcPager指定页索引输入或选择框,请将PagerOptions.PageIndexBoxId设置为该文本框或下拉框的客户端id,将PagerOptions.GoToButtonId设置为跳转按钮的客户端id,若未设置PagerOptions.GoToButtonId,则页索引文本或下拉框中的值改变时即自动实现分页跳转,否则需要点击跳转按钮进行跳转。*@
    </div>
    View Code

    分页默认是Get提交

    5、翻页时 附带参数问题 

    场景:假如有订单查询页面,带参数查询出一些结果。在点第二页的时候,需要保留文本框中的查询参数。

    一般情况下 表单提交才用Post,此种情况下 翻页是不会带参数的。需要将post改为Get才行。

     @using (Html.BeginForm("List", "ExpertBooking", FormMethod.Get, new { id = "frmReport" }))
  • 相关阅读:
    C++中使用多线程
    hdu 4223 dp 求连续子序列的和的绝对值最小值
    hdu 1372 bfs 计算起点到终点的距离
    hdu 4217 线段树 依次取第几个最小值,求其sum
    心得
    hdu 1175 bfs 按要求进行搜索,是否能到达,抵消两个(相同)棋子
    hdu 4221 greed 注意范围 工作延期,使整个工作时间罚时最少的单个罚时最长的值
    hdu 2844 多重背包 多种硬币,每一种硬币有一点数量,看他能组成多少种钱
    uva LCDDisplay
    hdu 4218 模拟 根据一个圆点和半径画一个圆 注意半径要求
  • 原文地址:https://www.cnblogs.com/peterYong/p/10685586.html
Copyright © 2011-2022 走看看