国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

NET分頁實現(xiàn)及代碼

2019-11-17 01:34:33
字體:
供稿:網(wǎng)友

NET分頁實現(xiàn)及代碼

最近在寫一個關(guān)于NET的框架,寫到后面果不其然的就遇到了分頁,自己看了很多關(guān)于分頁的并自己結(jié)合寫了一個,曬出來和大家分享一下,第一次寫博客望大家多多提意見啦。。。

cs文件分頁代碼:

1 Paging p = new Paging(3, sql語句);     //每頁3條 2 ViewState["List"] = p.GetDataTable(); //查詢出要顯示的DataTable3 ViewState["page"] = p.GetPageing(this); //分頁顯示html

前臺調(diào)用:

1 <%=ViewState["page"]%>

最近剛發(fā)現(xiàn)的ViewState這個函數(shù),只要后臺定義前臺就可以調(diào)用很方便。(這個是不是自己out了,現(xiàn)在才發(fā)現(xiàn))

下面是關(guān)于Paging類:

  1     public class Paging  2     {  3         PRivate string pagedNum;  //定義分頁條,輸出到前臺      4         private int pageSize;     // 定義每頁有多少條數(shù)據(jù)量.      5         private string url;       //獲取當前頁  6         private int countNum;    //總條數(shù)  7         private string SelSql;   //查詢SQL語句  8         private DataSet ds;  9  10         public Paging(int pageSize, string SelSql) 11         { 12             this.pageSize = pageSize; 13             this.url = HttpContext.Current.Request.Url.LocalPath; 14             this.SelSql = SelSql; 15             GetPageDate(SelSql); 16         } 17         //定義樣式a標簽第一個樣式     18         private readonly string CSStagA = @"<a href='{0}?page={1}' >{2}</a>";            //{0}{1}{2}代表url和參數(shù)名,參數(shù)值,頁碼值     19         //定義樣式a標簽第二個樣式     20         //private readonly string csstagA1 = "<a style='font-size:13px;font-weight:bold;margin:0 4px 0 4px'>{0}</a>"; 21         private readonly string csstagA1 = "<span class='pc'>{0}</span>"; 22  23  24         public delegate int GetDelegate(); 25  26  27         /// <summary>     28         /// 生成分頁條     29         /// </summary>     30         /// <param name="pageIndex">當前頁</param>     31         /// <param name="del">獲得數(shù)據(jù)條數(shù)的方法</param>     32         /// <returns></returns>     33         public string GetPageing(Page p) 34         { 35             string index = p.Request.QueryString["page"]; 36             int i; 37             if (!string.IsNullOrEmpty(index) && int.TryParse(index, out i)) 38             { 39                 pagedNum = GetPagegNum(i, GetPageCount(i, countNum)); 40             } 41             else 42             { 43                 pagedNum = GetPagegNum(1, GetPageCount(1, countNum)); 44             } 45              46             return pagedNum; 47         } 48  49         private int GetPageCount(int pageIndex, int countPage)     //獲得總頁數(shù)     50         { 51             int Count = 0; 52             Count = countPage; 53             double c = Count * 1.0 / pageSize; 54             return (int)Math.Ceiling(c); 55         } 56  57  58         private string GetPagegNum(int pageIndex, int pageCount)           //類似   上一頁 1 ... 7 8 9 ⑩ 11 12 13 14 下一頁   ⑩是當前選中頁     59         { 60             StringBuilder sb = new StringBuilder(); 61             List<int> ns = new List<int>();              //用于接收當前頁范圍內(nèi)的數(shù)字     62             string[] numList = new string[12];           //12個字符串數(shù)組,存放分頁條數(shù)據(jù)     63             numList[0] = "";       //“上一頁”位置     64             numList[11] = "";      //“下一頁”位置         65             if (pageIndex > 1)                                         //判斷當前頁     66             { 67                 numList[0] = string.Format(csstagA, url, (pageIndex - 1), "<上一頁"); 68             } 69             if (pageIndex < pageCount) 70             { 71                 numList[11] = string.Format(csstagA, url, (pageIndex + 1), "下一頁>"); 72             } 73             if (pageIndex >= 10)    //當前頁大于10頁的狀態(tài)     74             { 75                 //主要的     76                 numList[1] = string.Format(csstagA, url, 1, 1); 77                 numList[2] = "..."; 78                 //int index = 0;     79                 if (pageIndex + 4 >= pageCount)    //如果當前頁加4頁小于總頁數(shù)     80                 { 81                     for (int i = pageCount - 7; i < pageCount + 1; i++) 82                     { 83                         //index = i;     84                         ns.Add(i); 85                     } 86                     for (int j = 0; j <= 7; j++)    //遍歷ns頁碼值填充到分頁條     87                     { 88                         if (ns[j] == pageIndex)     //判斷是否為當前頁碼,來使用不同css樣式     89                         { 90                             numList[j + 3] = string.Format(csstagA1, ns[j]);  //因為字符串數(shù)組前3位分別為“上一頁”,“1”,“...”,所以從第四位填充7個     91                         } 92                         numList[j + 3] = string.Format(csstagA, url, ns[j], ns[j]); 93                     } 94                 } 95                 for (int i = pageIndex - 3; i <= pageIndex + 4; i++) 96                 { 97                     //index = i;     98                     ns.Add(i); 99                 }100                 for (int j = 0; j <= 7; j++)101                 {102                     if (ns[j] == pageIndex)103                     {104                         numList[j + 3] = string.Format(csstagA1, ns[j]);105                     }106                     else107                     {108                         numList[j + 3] = string.Format(csstagA, url, ns[j], ns[j]);109                     }110                 }111             }112             else   //10頁以下的狀態(tài)    113             {114                 if (pageCount >= 10)               //頁數(shù)大于等于10    115                 {116                     for (int i = 1; i <= 10; i++)117                     {118                         if (i == pageIndex)119                         {120                             numList[i] = string.Format(csstagA1, i);121                         }122                         else123                         {124                             numList[i] = string.Format(csstagA, url, i, i);125                         }126                     }127                 }128                 else            //頁數(shù)小于10    129                 {130                     for (int i = 1; i <= pageCount; i++)131                     {132                         if (i == pageIndex)133                         {134                             numList[i] = string.Format(csstagA1, i);135                         }136                         else137                         {138                             numList[i] = string.Format(csstagA, url, i, i);139                         }140                     }141                 }142             }143             sb.Append("<div class='page'>");144             for (int i = 0; i < numList.Length; i++)   //將字符串數(shù)組填入StringBulider中    145             {146                 sb.Append(numList[i]);147             }148 149             sb.AppendFormat(" 共{0}/{1}條", pageIndex, pageCount);150             sb.Append("</div>");151             return sb.ToString();   //返回,并在前臺 <span id="pagedspan"><%=pagedNum %></span>    152         }153 154         /// <summary>155         /// 獲取分頁數(shù)據(jù)和總頁數(shù)156         /// </summary>157         /// <param name="pageSql"></param>158         public void GetPageDate(string pageSql)159         {160             int pageIndex = Req.QueryString("page").ToInt(1);161 162             StringBuilder strSql = new StringBuilder();163             strSql.Append(@"declare @startRow int164 declare @endRow int165 declare @pageSize int166 declare @pageIndex int167 set @pageSize=@pageSize2 168 set @pageIndex=@pageIndex2 169 set @startRow=(@pageIndex-1) * @pageSize+1 170 set @endRow=@pageSize*@pageIndex");171             strSql.Append(" select * from(");172             strSql.Append("select *,ROW_NUMBER() OVER (ORDER BY getdate()) pageID from(");173             strSql.Append(pageSql);174             strSql.Append(")tab_a");175             strSql.Append(")tab_b where pageID between @startRow and @endRow");176 177
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 白河县| 邳州市| 库伦旗| 察隅县| 迁安市| 上高县| 井陉县| 华池县| 凤台县| 霍州市| 栾川县| 施甸县| 乌兰县| 尼勒克县| 仁布县| 噶尔县| 扎囊县| 田东县| 洛阳市| 黄冈市| 五大连池市| 庐江县| 邢台县| 麻江县| 昌图县| 卢湾区| 湖州市| 宾川县| 新乐市| 乌兰县| 林周县| 曲靖市| 丽江市| 浦城县| 滨海县| 读书| 北安市| 陆河县| 叶城县| 郯城县| 勐海县|