最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

簡單好用的ASP.NET分頁類(支持AJAX、自定義文字)

 更新時間:2015年06月08日 09:42:43   投稿:junjie  
這篇文章主要介紹了簡單好用的ASP.NET分頁類(支持AJAX、自定義文字),本文直接給出實現(xiàn)代碼和使用方法,需要的朋友可以參考下

在做網(wǎng)站沒用 JS UI控件時 很實用

用法:

var ps=new PageString();
 
 /*可選參數(shù)*/
 
 ps.SetIsEnglish = true;// 是否是英文    (默認:false)
 ps.SetIsShowText = true;//是否顯示分頁文字 (默認:true)
 //ps.TextFormat=""             (默認值:《span class=\"pagetext\"》《strong》總共《/strong》:{0} 條 《strong》當前《/strong》:{1}/{2}《/span》)
 //ps.SetPageIndexName Request["pageIndex"](默認值:"pageIndex")
 ps.SetIsAjax = false;//          (默認值:"false")
 
 /*函數(shù)參數(shù)*/
 int total = 10000;
 int pageSize = 10;
 int pageIndex = Convert.ToInt32(Request["pageIndex"]);
 
 var page = ps.ToString(total, pageSize, pageIndex, "/UI/PageStringTest.aspx?");
 
 //獲取 page html 輸出
Response.Write(page);

效果:

代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
 
namespace SyntacticSugar
{
  /// <summary>
  /// ** 描述:分頁類
  /// ** 創(chuàng)始時間:2015-5-29
  /// ** 修改時間:-
  /// ** 作者:sunkaixuan
  public class PageString
  {
    /// <summary>
    /// 是否是英文   (默認:false)
    /// </summary>
    public bool SetIsEnglish { get; set; }
    /// <summary>
    /// 是否顯示分頁文字(默認:true)
    /// </summary>
    public bool SetIsShowText { get; set; }
    /// <summary>
    /// 樣式      (默認:"pagination")
    /// </summary>
    public string SetClassName { get; set; }
    /// <summary>
    /// 分頁參數(shù)名   (默認:"pageIndex")
    /// </summary>
    public string SetPageIndexName { get; set; }
    /// <summary>
    /// 是否是異步 同步 href='' 異步 onclick=ajaxPage()  (默認:false)
    /// </summary>
    public bool SetIsAjax { get; set; }
 
    /// <summary>
    /// 自定義文字
    /// string.Format("{0}{1}{2}","總記錄數(shù)","當前頁數(shù)","總頁數(shù)")
    /// 默認值:《span class=\"pagetext\"》《strong》總共《/strong》:{0} 條 《strong》當前《/strong》:{1}/{2}《/span》
    /// </summary>
    public string SetTextFormat { get; set; }
 
    public PageString()
    {
      SetIsEnglish = false;
      SetIsShowText = true;
      SetTextFormat = "<span class=\"pagetext\"><strong>總共</strong>:{0} 條 <strong>當前</strong>:{1}/{2}</span> ";
      SetClassName = "pagination";
      SetPageIndexName = "pageIndex";
      SetIsAjax = false;
    }
 
    /*免費的樣式
    .pagination .click {cursor:pointer}
    .pagination a{text-decoration: none;border: 1px solid #AAE;color: #15B;font-size: 13px;border-radius: 2px;}
    .pagination span{ color:#666;font-size:13px;display: inline-block;border: 1px solid #ccc;padding: 0.2em 0.6em;}
    .pagination span.pagetext{ border:none}
    .pagination a:hover{background: #26B;color: #fff;}
    .pagination a{display: inline-block;padding: 0.2em 0.6em;}
    .pagination .page_current{background: #26B;color: #fff;border: 1px solid #AAE;margin-right: 5px;}
    .pagination{margin-top: 20px;}
    .pagination .current.prev, .pagination .current.next{color: #999;border-color: #999;background: #fff;}
     * */
 
    /// <summary>
    /// 分頁算法<一>共20頁 首頁 上一頁 1 2 3 4 5 6 7 8 9 10 下一頁 末頁
    /// </summary>
    /// <param name="total">總記錄數(shù)</param>
    /// <param name="pageSize">每頁記錄數(shù)</param>
    /// <param name="pageIndex">當前頁數(shù)</param>
    /// <param name="query_string">Url參數(shù)</param>
    /// <returns></returns>
    public string ToString(int total, int pageSize, int pageIndex, string query_string)
    {
 
      int allpage = 0;
      int next = 0;
      int pre = 0;
      int startcount = 0;
      int endcount = 0;
      StringBuilder pagestr = new StringBuilder();
      pageIndex = pageIndex == 0 ? 1 : pageIndex;
      pagestr.AppendFormat("<div class=\"{0}\" >", SetClassName);
      if (pageIndex < 1) { pageIndex = 1; }
      //計算總頁數(shù)
      if (pageSize != 0)
      {
        allpage = (total / pageSize);
        allpage = ((total % pageSize) != 0 ? allpage + 1 : allpage);
        allpage = (allpage == 0 ? 1 : allpage);
      }
      next = pageIndex + 1;
      pre = pageIndex - 1;
      startcount = (pageIndex + 5) > allpage ? allpage - 9 : pageIndex - 4;//中間頁起始序號
      //中間頁終止序號
      endcount = pageIndex < 5 ? 10 : pageIndex + 5;
      if (startcount < 1) { startcount = 1; } //為了避免輸出的時候產(chǎn)生負數(shù),設置如果小于1就從序號1開始
      if (allpage < endcount) { endcount = allpage; }//頁碼+5的可能性就會產(chǎn)生最終輸出序號大于總頁碼,那么就要將其控制在頁碼數(shù)之內(nèi)
 
      bool isFirst = pageIndex == 1;
      bool isLast = pageIndex == allpage;
 
      if (SetIsShowText)
        pagestr.AppendFormat(SetTextFormat, total, pageIndex, allpage);
 
      if (isFirst)
      {
        pagestr.Append("<span>首頁</span> <span>上一頁</span>");
      }
      else
      {
        pagestr.AppendFormat("<a href=\"{0}pageIndex=1\">首頁</a> <a href=\"{0}pageIndex={1}\">上一頁</a>", query_string, pre);
      }
      //中間頁處理,這個增加時間復雜度,減小空間復雜度
      for (int i = startcount; i <= endcount; i++)
      {
        bool isCurent = pageIndex == i;
        if (isCurent)
        {
          pagestr.Append(" <a class=\"page_current\">" + i + "</a>");
        }
        else
        {
          pagestr.Append("  <a href=\"" + query_string + "pageIndex=" + i + "\">" + i + "</a>");
        }
 
      }
      if (isLast)
      {
        pagestr.Append("<span>下一頁</span> <span>末頁</span>");
      }
      else
      {
        pagestr.Append(" <a href=\"" + query_string + "pageIndex=" + next + "\">下一頁</a> <a href=\"" + query_string + "pageIndex=" + allpage + "\">末頁</a>");
      }
      pagestr.AppendFormat("</div>");
      return ConversionData(pagestr.ToString());
    }
 
    private string ConversionData(string page)
    {
      if (SetIsEnglish)
      {
        page= page.Replace("上一頁", "Previous").Replace("下一頁", "Next").Replace("總共", "total").Replace("當前", "Current").Replace("條", "records").Replace("首頁", "First").Replace("末頁", "Last");
      }
      if (SetIsAjax)
      {
        var matches = Regex.Matches(page, @"href\="".*?""",RegexOptions.Singleline);
        if (matches != null && matches.Count > 0)
        {
          foreach (Match m in matches)
          {
            page = page.Replace(m.Value, string.Format("class=\"click\" onclick=\"ajaxPage('{0}')\"", Regex.Match(m.Value, string.Format(@"{0}\=(\d+)", SetPageIndexName)).Groups[1].Value));
          }
        }
      }
      return page;
 
    }
 
  }
 
}

相關文章

  • 使用pdfbox實現(xiàn)pdf文本提取和合并功能示例

    使用pdfbox實現(xiàn)pdf文本提取和合并功能示例

    這篇文章主要介紹了使用pdfbox實現(xiàn)pdf文本提取和合并功能示例,大家參考使用吧
    2014-01-01
  • .net 添加Cookie的4種方法

    .net 添加Cookie的4種方法

    這篇文章主要介紹了.net 添加Cookie的4種方法,有需要的朋友可以參考一下
    2014-01-01
  • linq中的連接操作符

    linq中的連接操作符

    這篇文章介紹了linq中的連接操作符,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • .NET全局靜態(tài)可訪問IServiceProvider的過程詳解(支持Blazor)

    .NET全局靜態(tài)可訪問IServiceProvider的過程詳解(支持Blazor)

    為解決在靜態(tài)方法中訪問依賴注入(DI)容器的問題,提出了通過DependencyInjection.StaticAccessor包實現(xiàn)靜態(tài)訪問,這一方法特別適用于需要在靜態(tài)方法中獲取范圍內(nèi)(Scoped)服務的場景,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • .NET常用Request獲取信息總結

    .NET常用Request獲取信息總結

    .NET常用Request獲取信息總結,需要的朋友可以參考一下
    2013-03-03
  • vs2008最近打開的項目清除方法

    vs2008最近打開的項目清除方法

    vs2008最近的打開的項目,這個功能是挺方便的,不過本人不想看到它,于是乎想要清楚掉他,搜集整理了一些實用操作步驟,感興趣的你可不要錯過了哈
    2013-02-02
  • C#多線程Singleton(單件)模式模板

    C#多線程Singleton(單件)模式模板

    下面是一個C#多線程單件模式的代碼模板。把T換成你自己的類型就可以使用了。其精妙之處就在于用lock語句鎖定資源來避免多線程同時走入if語句去創(chuàng)建多個對象
    2012-02-02
  • MVC使用T4模板生成其他類的具體實現(xiàn)學習筆記2

    MVC使用T4模板生成其他類的具體實現(xiàn)學習筆記2

    這篇文章主要為大家詳細介紹了MVC使用T4模板生成其他類的具體實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Asp.net調(diào)試的一些問題小結

    Asp.net調(diào)試的一些問題小結

    這篇文章主要介紹了asp.net調(diào)試方便的知識點,在CSDN找了一些相關的解決方法,不敢獨享,供大家相互學習交流之用
    2013-11-11
  • ASP.NET 2.0 程序安全的基礎知識

    ASP.NET 2.0 程序安全的基礎知識

    成員關系的概念在人類社會中是一個層次比較低的概念,源于希望屬于某個群組的意識。同樣,在ASP.NET 2.0程序開始開發(fā)涉及到成員關系的應用程序時,必須首先理解身份、驗證和授權這幾個關鍵的概念。
    2010-04-04

最新評論

安塞县| 黎平县| 酉阳| 铁力市| 淮阳县| 新宁县| 盐亭县| 姚安县| 手游| 吉林市| 黎城县| 宁河县| 合作市| 阿克| 鄂托克旗| 新民市| 酉阳| 柳州市| 柘城县| 长春市| 伊吾县| 远安县| 太仆寺旗| 荃湾区| 潢川县| 滦平县| 濮阳市| 阿坝| 尉氏县| 耿马| 石台县| 图木舒克市| 湟中县| 会昌县| 玉树县| 克什克腾旗| 长顺县| 恭城| 浦东新区| 惠来县| 嘉黎县|