zoukankan      html  css  js  c++  java
  • asp.net mvc 分页

    代码
        public static class htmlPager
        {
            
    public static string myPager(this System.Web.Mvc.HtmlHelper html,int totalPage,int currentPage,
                 Func
    <int,string> actionUrls) {

                System.Text.StringBuilder sb 
    = new System.Text.StringBuilder();
                
    #region “前一页”
                TagBuilder tgPrev 
    = new TagBuilder("a");
                tgPrev.InnerHtml 
    = "前一页";

                
    if (currentPage!=1 && totalPage>1)
                {
                    tgPrev.MergeAttribute(
    "href", actionUrls(1));
                }
                sb.Append(tgPrev.ToString());
                
    #endregion
                
                    
    if (totalPage <= 10)
                    {
                        
    for (int i = 1; i <= totalPage; i++)
                        {
                            TagBuilder tg 
    = new TagBuilder("a");
                            tg.MergeAttribute(
    "href", actionUrls(i));
                            tg.InnerHtml 
    = (i.ToString());

                            
    if (i == currentPage)
                            {
                                tg.AddCssClass(
    "selected");
                            }
                            sb.Append(tg.ToString());
                        }
                    }
                    
    else {//大于10页
                        if (currentPage < 7)
                        {
                            
    for (int i = 1; i <= totalPage; i++)
                            {
                                TagBuilder tg 
    = new TagBuilder("a");
                                
    if (i < 8)
                                {
                                    tg.MergeAttribute(
    "href", actionUrls(i));
                                    tg.InnerHtml 
    = (i.ToString());
                                }
                                
    else if (i == 8)
                                    tg.InnerHtml 
    = "……";
                                
    else {
                                    
    if (i > (totalPage - 2)) {
                                        tg.MergeAttribute(
    "href", actionUrls(i));
                                        tg.InnerHtml 
    = (i.ToString());
                                    }
                                }
                                
    if (i == currentPage)
                                {
                                    tg.AddCssClass(
    "selected");
                                }
                                
    if(tg.InnerHtml!="")
                                sb.Append(tg.ToString());
                            }
                        }
                        
    else if (currentPage >= 7) {
                            
    for (int i = 1; i <= totalPage; i++)
                            {
                                TagBuilder tg 
    = new TagBuilder("a");
                                
    if (i < 3) {
                                    tg.MergeAttribute(
    "href", actionUrls(i));
                                    tg.InnerHtml 
    = (i.ToString());
                                }
                                
    if (i == 3
                                    tg.InnerHtml 
    = "……";
                                
    if ((totalPage - currentPage) > 6)
                                {
                                    
    if ((totalPage - currentPage) > 5)
                                    {
                                        
    if ((currentPage - i) <= 2 && (currentPage - i) >= -3)
                                        {
                                            tg.MergeAttribute(
    "href", actionUrls(i));
                                            tg.InnerHtml 
    = (i.ToString());
                                        }
                                        
    if ((currentPage - i) == -4)
                                            tg.InnerHtml 
    = "……";
                                        
    if ((totalPage - i) <= 2)
                                        {
                                            tg.MergeAttribute(
    "href", actionUrls(i));
                                            tg.InnerHtml 
    = (i.ToString());
                                        }
                                    }
                                    
    else if ((currentPage - i) < 2)
                                    {
                                        tg.MergeAttribute(
    "href", actionUrls(i));
                                        tg.InnerHtml 
    = (i.ToString());
                                    }
                                }
                                
    else
                                {
                                    
    if ((currentPage - i) < 2 || (totalPage-i)<7)
                                    {
                                        tg.MergeAttribute(
    "href", actionUrls(i));
                                        tg.InnerHtml 
    = (i.ToString());
                                    }
                                }
                                
    if (i == currentPage)
                                    tg.AddCssClass(
    "selected");
                                
    if (tg.InnerHtml != "")
                                    sb.Append(tg.ToString());
                            }
                        }
                    }
                
                
    #region “后一页”
                TagBuilder tgNext 
    = new TagBuilder("a");
                tgNext.InnerHtml 
    = "后一页";

                
    if (currentPage != totalPage && totalPage > 1)
                {
                    tgNext.MergeAttribute(
    "href", actionUrls(currentPage+1));
                }
                sb.Append(tgNext.ToString());
                
    #endregion

                
    #region 搜索
                TagBuilder tbTxt 
    = new TagBuilder("input");
                tbTxt.MergeAttribute(
    "value", currentPage.ToString());
                tbTxt.MergeAttribute(
    "id""_Ext_txtmyPageIndex");
                tbTxt.MergeAttribute(
    "name""_Ext_txtmyPageIndex");
                tbTxt.MergeAttribute(
    "style","50px;");
                sb.Append(tbTxt.ToString());

                TagBuilder tbHidden_TotalPages 
    = new TagBuilder("input");
                tbHidden_TotalPages.MergeAttribute(
    "value", totalPage.ToString());
                tbHidden_TotalPages.MergeAttribute(
    "id""_Ext_txtmyTotalPage");
                tbHidden_TotalPages.MergeAttribute(
    "name""_Ext_txtmyTotalPage");
                tbHidden_TotalPages.MergeAttribute(
    "type""hidden");
                sb.Append(tbHidden_TotalPages.ToString());

                TagBuilder tbGo 
    = new TagBuilder("input");
                tbGo.MergeAttribute(
    "type","submit");
                tbGo.MergeAttribute(
    "value","GO");
                sb.Append(tbGo.ToString());
                
    #endregion

                
    return sb.ToString();
            }
    }


    调用这个扩张方法

    代码
    <div class="pager">
        
    <% using (Html.BeginForm())
           { 
    %>
                
    <%= Html.myPager((int)ViewData["totalPage"],
                    (
    int)ViewData["currentPage"], x => Url.Action("index"new { id = x })) %>
        
    <% } %>
        
    </div>
    //表达式,也可以不用表达式。 
    // Url.Action("index", new { id = x })返回 /{controller}/{action}/{id} 格式
    // 用于告知提交的目的地


    Colltroller内的方法
    private readonly int pagesize = 5;
            
    public ActionResult Index(int? id,FormCollection form)
            {
                
    int Ind = 0;
                
    if (id == null )
                    Ind 
    = 1;
                
    else
                {
                    
    string index = form.Get("_Ext_txtmyPageIndex");
                    Ind 
    = ((int)id) == -1 ? int.Parse(index) : (int)id;  // (int)id;   
                }

                NorthwindEntities ne 
    = new NorthwindEntities();
                ViewData[
    "currentPage"= Ind;
                ViewData[
    "totalPage"=  (int)Math.Ceiling((double)ne.Products.Count() / pagesize);

                
    return View(ne.Products.OrderBy(f=>f.ProductID).Skip(pagesize*(Ind-1)).Take(pagesize));
            }

            [AcceptVerbs(HttpVerbs.Post)]
            
    public ActionResult Index(FormCollection form) {
                    
    return RedirectToAction("index"new { id = form.Get("_Ext_txtmyPageIndex") });
            }

    post是处理用户自定义页面索引


  • 相关阅读:
    Idea 代码编辑错误不飘红提示
    Java序列化机制和原理
    tomcat 启动报错org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalin
    idea tomcat 怎样出现update classes and resources
    Java List序列化的实现
    Spring管理的bean初始化方法的三种方式,以及@PostConstruct不起作用的原因
    Tomcat 启动或者发布项目时提示Publishing failed:Resource /xxxx does not exist
    spring中的context:include-filter和context:exclude-filter的区别
    oracle字符集修改
    VML、SVG、Canvas简介
  • 原文地址:https://www.cnblogs.com/jianjialin/p/1618595.html
Copyright © 2011-2022 走看看