Pagerのコンパクトなページングコントロール

4326 ワード

ユーザーコントロールの作成:Pager.ascx、バックグラウンドコード:
 
  public partial class Pager : System.Web.UI.UserControl{private string_UrlFormat;private int_PageSize=10;private int_RecordCount;private int_PageCount=5;/**/////接続形式//public string UrlFormat{get{                 return _UrlFormat;             }             set             {                 _UrlFormat = value; }//**//////ページ長//public int PageSize{get{return_PageSize;            }             set             {                 _PageSize = value; }/**//////現在のページ番号//public int PageIndex{get{string Pageindex=HttpContext.Current.Request.QueryString["i"];if(Pageindex!=null)                 {                     return int.Parse(Pageindex);                 }                 return 1; }//**//////総記録数//public int RecordCount{get{return_RecordCount;            }             set             {                 _RecordCount = value; }}/*//////両側に個数//public int PageCount{get{return_PageCount;            }             set             {                 _PageCount = value;             }         }           protected override void Render(HtmlTextWriter writer)         {             if (RecordCount == 0)                 return;             int SumPage = (RecordCount + PageSize - 1)/PageSize;               int start = PageIndex - PageCount;             int end = PageIndex + PageCount;//PageIndexを中心に、Page個のページ番号ナビゲーションif(SumPage>(PageCount*2+1){if(start<1){start=1;end=start+10;               }                else if (end > SumPage)                {                    start = SumPage - 10;                    end = SumPage;                }            }            else            {                start = 1;                end = SumPage;            }
 
           string tmp = "[{0}]"; StringBuilder sb=new StringBuilder(string.Format(「ページ数:{0}/{1}毎ページ:{2}合計:{3}条」,PageIndex,SumPage,PageSize,RecordCount);if(PageIndex>1){sb.Append(string.Format)(「「トップページ」,1);sb.Append(string.Format(「「前ページ」,PageIndex-1);            }             for (int i = start; i <= end; i++)             {                 if (i == PageIndex)                 {                     sb.Append(""+ PageIndex.ToString() + " ");                 }                 else                 {                     sb.Append(string.Format(tmp, i));                 }                 sb.Append(" "); }if(PageIndex「次ページ」,PageIndex+1);sb.Append(string.Format(「">末页」,SumPage);            }             writer.Write(sb.ToString());         }         protected void Page_Load(object sender, EventArgs e)         {
        }     }
 
 
使用方法:
Pagerをページにドラッグして、ページのバックグラウンドコードに入り、以下のように設定します.
 



 
   
Pager1.UrlFormat = " ?i={0} " ; //
int recordcount, pagecount;
Repeater1.DataSource = ;
Repeater1.DataBind();
Pager1.RecordCount = recordcount;