一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - 簡單好用的ASP.NET分頁類(支持AJAX、自定義文字)

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

2019-12-17 12:50junjie ASP.NET教程

這篇文章主要介紹了簡單好用的ASP.NET分頁類(支持AJAX、自定義文字),本文直接給出實現代碼和使用方法,需要的朋友可以參考下

在做網站沒用 JS UI控件時 很實用

用法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var ps=new PageString();
 
 /*可選參數*/
 
 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")
 
 /*函數參數*/
 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);

 

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

代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
 
namespace SyntacticSugar
{
  /// <summary>
  /// ** 描述:分頁類
  /// ** 創始時間: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>
    /// 分頁參數名   (默認:"pageIndex")
    /// </summary>
    public string SetPageIndexName { get; set; }
    /// <summary>
    /// 是否是異步 同步 href='' 異步 onclick=ajaxPage()  (默認:false)
    /// </summary>
    public bool SetIsAjax { get; set; }
 
    /// <summary>
    /// 自定義文字
    /// string.Format("{0}{1}{2}","總記錄數","當前頁數","總頁數")
    /// 默認值:《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">總記錄數</param>
    /// <param name="pageSize">每頁記錄數</param>
    /// <param name="pageIndex">當前頁數</param>
    /// <param name="query_string">Url參數</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; }
      //計算總頁數
      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; } //為了避免輸出的時候產生負數,設置如果小于1就從序號1開始
      if (allpage < endcount) { endcount = allpage; }//頁碼+5的可能性就會產生最終輸出序號大于總頁碼,那么就要將其控制在頁碼數之內
 
      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;
 
    }
 
  }
 
}

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美同性猛男野外gay免费 | 四虎影库网址 | 无限观看社区在线视频 | 日韩亚洲人成网站在线播放 | 国产激情一区二区三区四区 | 久久亚洲精品AV成人无 | 欧美人人干| 91tv破解版不限次数 | 精品综合在线 | 精品无人区麻豆乱码1区2 | 肉大捧一进一出视频免费播放 | 午夜香蕉成视频人网站高清版 | 网友偷自拍原创区 | 校草让我脱了内裤给全班看 | 精品日本三级在线观看视频 | 色吧| 欧美一区二区视频 | 国产精品视频免费一区二区三区 | 久久国产乱子伦免费精品 | 人与善交大片免费看 | 国产精品久久久久无毒 | 精品国产免费久久久久久婷婷 | 欧美最猛性xxxxx短视频 | 视频在线免费看 | 三级无删减高清在线影院 | 热久久免费 | ova巨公主催眠1在线观看 | 视频在线免费看 | 久久er国产免费精品 | 嫩草成人国产精品 | 精品无码久久久久久久久 | 国产亚洲精品激情一区二区三区 | 亚洲精品αv一区二区三区 亚洲精品91大神在线观看 | 国产亚洲sss在线观看 | 亚洲精品国产精品精 | 91精品国产综合久久消防器材 | 亚洲AV永久无码精品老司机蜜桃 | 日日艹| 国产91精品在线播放 | 国产亚洲人成网站天堂岛 | 草草免费观看视频在线 |