shawl.qiu c# .net DataList, Repeater, DataGrid 分页类 v1.0

    技术2022-05-11  54

    shawl.qiu c# .net DataList, Repeater, DataGrid 分页类 v1.0

    说明: 其实 DataGrid 本身就自带分页...不过鄙人很讨厌 Table, 虽然也可以设置为Flow, 但灵活性还是打折了, 应用虽然非常方便, 但是不灵活. 从自由点来看, 鄙人比较喜欢灵活性较高的 DataList, 可发觉没自带分页功能, 这大概就是什么鱼与熊掌, 不可兼得的原因吧... 因此这个类就诞生了... Pagination 类 使用重载, 使得使用最少的代码可让分页功能应用于: DataList, Repeater, DataGrid. 目录: 1. x.aspx 2. cs/Pagination.cs 下载原格式: http://files.myopera.com/btbtd/csharp/class/sq_csharp_pagination_class_v1.0.7z shawl.qiu 2007-02-09 http://blog.csdn.net/btbtd 内容: 1. x.aspx <%@ Page Language="C#AutoEventWireup="True" %> <%@ Assembly src="cs/Pagination.cs" %> <%@ import Namespace="System.Data" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Typecontent="text/html; charset=utf-8" /> <title>shawl.qiu template</title> <style type="text/css"> /*<![CDATA[*/ .sqPagedCurLink{     color: #FFCCFF;  font-weight:bold; } .sqPagedNonLink{  color:#ccc; } .sqPagedJumpBox{  border:0px;  border-bottom:1px dashed black;  width:48px; } /*]]>*/ </style> <script runat="server">  void Page_Load(Object s, EventArgs e)  {    DataTable dt =new DataTable();   DataRow dr;      dt.Columns.Add(new DataColumn("id", typeof(Int32)));   dt.Columns.Add(new DataColumn("item", typeof(String)));      for(Int32 i=0; i<222; i++)   {    dr=dt.NewRow();    dr[0]=i;    dr[1]="item "+i.ToString();    dt.Rows.Add(dr);   }      Pagination Paged=new Pagination();    Paged.Debug=false;                      // 是否为调试模式    Paged.DebugLabel=glrDebugLabel;         // 显示调试信息的 Label    Paged.NavigatorLabel=glrPagedLabel;     // 显示主导航条的 Label    Paged.DetailsLabel=glrPagedDetailsLabel;// 显示分页明细的 Label    Paged.PageSize=10;                      // 每页大小     Paged.Go(dt, glrFileList);              // 执行分页    Paged=null;     } // end Page_Load </script> </head> <body>  <form runat="server">   <div class="algc">    <asp:Label id="glrDebugLabelrunat="server" />   </div>   <div class="algc">    <asp:Label id="glrPagedLabelrunat="server" />    <div class="algc">     <asp:Label id="glrPagedDetailsLabelrunat="server" />    </div>   </div>   <asp:DataList id="glrFileList"    BorderColor="black"    CellPadding="5"    CellSpacing="5"    RepeatDirection="Horizontal"    RepeatLayout="Flow"    RepeatColumns="5"    ShowBorder="True"    runat="server">      <HeaderTemplate>     <div>    </HeaderTemplate>        <HeaderStyle BackColor="#aaaadd">    </HeaderStyle>       <AlternatingItemStyle BackColor="Gainsboro">    </AlternatingItemStyle>         <ItemTemplate>      <href="?id=<%# DataBinder.Eval(Container.DataItem, "id") %>">      <%# DataBinder.Eval(Container.DataItem, "item") %>     </a>     </ItemTemplate>    <%--    <SeparatorTemplate>     </SeparatorTemplate> --%>    <FooterTemplate>     </div>    </FooterTemplate>   </asp:DataList>  </form> </body> </html>   2. cs/Pagination.cs using System; using System.Data; using System.Web.UI.WebControls; using System.Text.RegularExpressions; /*-----------------------------------------------------------------------------------*/  * shawl.qiu c# .net Pagination class v1.0 /*-----------------------------------------------------------------------------------*/ //---------------------------------------------------------------------begin class Pagination public class Pagination {  //-----------------------------------begin event  public Pagination()  {  }    ~Pagination()  {  }  //-----------------------------------end event    //-----------------------------------begin public constant  //-----------------------begin about  public const String auSubject="shawl.qiu c# .net Pagination class";  public const String auVersion="v1.0";  public const String au="shawl.qiu";  public const String auEmail="shawl.qiu@gmail.com";  public const String auBlog="http://blog.csdn.net/btbtd";  public const String auCreateDate="2007-2-9";  //-----------------------end about  //-----------------------------------end public constant    //-----------------------------------begin public variable  public Int32 PageSize=10;  public Int32 CurrentPage=0;  public Int32 ListNumSize=10;    public String QueryId="page";    public Boolean Debug=false;    public Label DebugLabel;  public Label NavigatorLabel;  public Label DetailsLabel;    public String WordFirst="首页";  public String WordPreviousTen="上十页";  public String WordPrevious="上一页";  public String WordNext="下一页";  public String WordNextTen="下十页";  public String WordLast="末页";  //-----------------------------------end public variable    //-----------------------------------begin private variable  private Int32 PageCount=0;  private Int32 DataSourceCount=0;    private String QueryUrl="";   //-----------------------------------end private variable    //-----------------------------------begin public method  public void Go(DataTable dtDataTable, DataList dsDataList)  {   if(dtDataTable==null||dsDataList==null)goto End;    dsDataList.DataSource=objPagedDataSource(dtDataTable);     dsDataList.DataBind();   End:;  }  public void Go(DataTable dtDataTable, Repeater rptRepeater)  {   if(dtDataTable==null||rptRepeater==null)goto End;    rptRepeater.DataSource=objPagedDataSource(dtDataTable);     rptRepeater.DataBind();   End:;  }  public void Go(DataTable dtDataTable, DataGrid dgDataGrid)  {   if(dtDataTable==null||dgDataGrid==null)goto End;    dgDataGrid.DataSource=objPagedDataSource(dtDataTable);     dgDataGrid.DataBind();   End:;  }  //-----------------------------------end public method    //-----------------------------------begin private method  private PagedDataSource objPagedDataSource(DataTable dtDataTable)  {    PagedDataSource dtPaged=new PagedDataSource();   dtPaged.DataSource = dtDataTable.DefaultView;    dtPaged.AllowPaging = true   dtPaged.PageSize = PageSize;    DataSourceCount=dtPaged.DataSourceCount;      Int32 PageCount=dtPaged.PageCount;      if(System.Web.HttpContext.Current.Request.QueryString[QueryId]!=null)   {    String sTemp=System.Web.HttpContext.Current.Request.QueryString[QueryId];    CurrentPage=Int32.Parse(sTemp);   }      if(CurrentPage+1>PageCount)   {    CurrentPage=PageCount;   }   if(CurrentPage<1)   {    CurrentPage=1;   }      AutoConvertPagedUrl(QueryId, out QueryUrl);      if(Debug&&DebugLabel!=null)   {    DebugLabel.Text+="<li/>总记录数: "+DataSourceCount;    DebugLabel.Text+="<li/>总页数: "+PageCount;    DebugLabel.Text+="<li/>当前页: "+CurrentPage;    DebugLabel.Text+="<li/>每页大小: "+PageSize;    DebugLabel.Text+="<li/>QueryUrl "+QueryUrl;        DebugLabel.Text+="<hr/>";   }      if(NavigatorLabel!=null)   {    if(CurrentPage!=1)    {     NavigatorLabel.Text="<a href='"+QueryUrl+"1'>"+WordFirst+"</a> ";    }    else     {     NavigatorLabel.Text+="<span class='sqPagedNonLink'>"+WordFirst+"</span> ";    }        if(Debug)    {     DebugLabel.Text+="<li/>"+WordPreviousTen+": "+(CurrentPage-(CurrentPage)-10);     DebugLabel.Text+="<hr/>";    }        if(CurrentPage-(CurrentPage)-10>=0)    {     NavigatorLabel.Text+="<a href='"+QueryUrl+      (CurrentPage-(CurrentPage)-10+1)+"'>"+WordPreviousTen+"</a> ";    }    else     {     NavigatorLabel.Text+="<span class='sqPagedNonLink'>"+WordPreviousTen+"</span> ";    }        if(CurrentPage>1)    {     NavigatorLabel.Text+="<a href='"+QueryUrl+(CurrentPage-1)+"'>"+WordPrevious+"</a> ";    }    else     {     NavigatorLabel.Text+="<span class='sqPagedNonLink'>"+WordPrevious+"</span> ";    }        Int32 LoopNum=CurrentPage-(CurrentPage)+1;    if(Debug)    {     DebugLabel.Text+="<li/>数字链接循环起始: "+LoopNum;     DebugLabel.Text+="<hr/>";    }        for(Int32 i=1; i<=ListNumSize; i++)    {     if(LoopNum>PageCount)break;     if(LoopNum==CurrentPage)     {      NavigatorLabel.Text+="<span class='sqPagedCurLink'>"+(LoopNum)+"</span> ";     }     else      {      NavigatorLabel.Text+="<a href='"+QueryUrl+(LoopNum)+"'>"+(LoopNum)+"</a> ";     }     LoopNum++;    }        if(CurrentPage<PageCount)    {     NavigatorLabel.Text+="<a href='"+QueryUrl+(CurrentPage+1)+"'>"+WordNext+"</a> ";    }    else     {     NavigatorLabel.Text+="<span class='sqPagedNonLink'>"+WordNext+"</span> ";    }        if(Debug)    {     DebugLabel.Text+="<li/>下十页: "+(CurrentPage-(CurrentPage)+10);     DebugLabel.Text+="<hr/>";    }        if(CurrentPage-(CurrentPage)+10<=PageCount)    {     NavigatorLabel.Text+="<a href='"+QueryUrl+      (CurrentPage-(CurrentPage)+11)+"'>"+WordNextTen+"</a> ";    }    else     {     NavigatorLabel.Text+="<span class='sqPagedNonLink'>"+WordNextTen+"</span> ";    }        if(CurrentPage!=PageCount)    {     NavigatorLabel.Text+="<a href='"+QueryUrl+(PageCount)+"'>"+WordLast+"</a> ";    }    else     {     NavigatorLabel.Text+="<span class='sqPagedNonLink'>"+WordLast+"</span> ";    }    PagedJumpBox(NavigatorLabel, QueryUrl);   }     if(DetailsLabel!=null)   {    DetailsLabel.Text=     PageSize+"篇/页 "+     (CurrentPage)+"/"+(PageCount)+     "页 共"+DataSourceCount+"篇";   }      dtPaged.CurrentPageIndex =(CurrentPage-1);   return dtPaged;  } // end private PagedDataSource objPagedDataSource    private void PagedJumpBox(Label NavigatorLabel, String QueryUrl)  {   NavigatorLabel.Text+="转到:/n";   NavigatorLabel.Text+=    "<input type='text' onsubmit='return false;' size='6' "+    "class='sqPagedJumpBox' onkeypress='fG2Url(this.value, this.form,event)' />/n";   NavigatorLabel.Text+="<script type='text/javascript'>/n";   NavigatorLabel.Text+="//<![CDATA[/n";   NavigatorLabel.Text+=function fG2Url(sUrl, oForm, oEvt){/n";   NavigatorLabel.Text+="  oForm.onsubmit=function()/n";   NavigatorLabel.Text+="  {/n";   NavigatorLabel.Text+="   return false;/n";   NavigatorLabel.Text+="  }/n";   NavigatorLabel.Text+="  if(!oEvt)var oEvt=window.event;/n";   NavigatorLabel.Text+="  var kc=oEvt.which||oEvt.keyCode;/n";   NavigatorLabel.Text+="  if(kc==13){/n";   NavigatorLabel.Text+=@"  sUrl=sUrl.replace(/^/s+|/s+$/g, '');";   NavigatorLabel.Text+=@"  sUrl=parseInt(sUrl)||1;";   NavigatorLabel.Text+=@"  window.location.href='"+QueryUrl+"'+sUrl}";   NavigatorLabel.Text+=" }/n";   NavigatorLabel.Text+="//]]>/n";   NavigatorLabel.Text+="</script>/n";  } // end private void PagedJumpBox    private void AutoConvertPagedUrl(String QueryId, out String QueryUrl)  {   QueryUrl=System.Web.HttpContext.Current.Request.Url+"";   if(QueryUrl.IndexOf(@"?")==-1)   {    QueryUrl+=@"?";   }   QueryUrl=Regex.Replace(QueryUrl,@"/b"+@QueryId+@"/=[^&]+","", RegexOptions.IgnoreCase);   QueryUrl+="&"+QueryId+"=";   QueryUrl=Regex.Replace(QueryUrl,@"/?/&",@"?", RegexOptions.IgnoreCase);   QueryUrl=Regex.Replace(QueryUrl,@"/&+",@"&", RegexOptions.IgnoreCase);  } // end private void AutoConvertPagedUrl  //-----------------------------------end private method } //---------------------------------------------------------------------end class Pagination   

    最新回复(0)