.NET用户自定义分页控件

11 篇文章 0 订阅


页面设计器内代码:

复制代码
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Pager.ascx.cs" Inherits="UserControl_Pager" %>
<table width="98%" border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
<tr>
<td align="right" style="padding-right: 20px; padding-top: 5px">
<asp:HyperLink ID="hpl_First" runat="server">首页</asp:HyperLink>&nbsp;<asp:HyperLink
ID="hpl_Prev" runat="server">上页</asp:HyperLink>&nbsp;
<asp:HyperLink ID="hpl_Next" runat="server">下页</asp:HyperLink>&nbsp;<asp:HyperLink
ID="hpl_Last" runat="server">末页</asp:HyperLink>
<asp:Label ID="lb_CurrentPage" runat="server"></asp:Label>/<asp:Label ID="lbl_PageCount"
runat="server"></asp:Label>页 共<asp:Label ID="lbl_ItemCount" runat="server"></asp:Label>条记录
转到
<asp:TextBox ID="txb_Page" runat="server" Width="30px" οnkeyup="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}"
onafterpaste="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}"></asp:TextBox>页&nbsp;<asp:LinkButton
ID="lbtn_goto" runat="server" OnClick="lbtn_goto_Click" Style="ime-mode: disabled;">转到</asp:LinkButton>
</td>
</tr>
</table>
复制代码

 

后台.cs代码:

     public  string  url; //页面地址
     public  string  Params; //页面传值参数
     public  int  CurPage; //当前页码
 
     private  void  Page_Load( object  sender, System.EventArgs e)
     {
         if  (!IsPostBack)
         {
             ViewState[ "pageUrl" ] = url;
             ViewState[ "pageParams" ] = Params;
         }
     }
 
 
     #region 数据绑定
     /// <summary>
     /// 数据绑定
     /// </summary>
     /// <param name="dt"></param>
     /// <returns></returns>
     public  PagedDataSource PagerDataBind(DataView dv)
     {
         PagedDataSource pds = new  PagedDataSource();
         pds.AllowPaging = true //允许分页
         pds.DataSource = dv;
 
         CurPage = 1;  //设置当前页的索引
         try
         {
             if  (Request.QueryString[ "Page" ] != null )
             {
                 CurPage = Convert.ToInt32(Request.QueryString[ "Page" ].ToString());
             }
             if  (CurPage < 1 || CurPage > pds.PageCount)
             {
                 Response.Redirect(url + "?Page=1"  + Params);
             }
         }
         catch
         {
             Response.Redirect(url + "?Page=1"  + Params);
         }
         pds.CurrentPageIndex = CurPage - 1;
         //显示状态信息
         lbl_ItemCount.Text = pds.DataSourceCount.ToString();
         //当前页
         lb_CurrentPage.Text = CurPage.ToString();
         this .txb_Page.Text = CurPage.ToString();
         //总页数
         lbl_PageCount.Text = pds.PageCount.ToString();
 
         //如果当前页面不是首页
         if  (!pds.IsFirstPage)
         {
             hpl_Prev.NavigateUrl = url + "?Page="  + Convert.ToString(CurPage - 1) + Params;
             hpl_First.NavigateUrl = url + "?Page=1"  + Params;
         }
         //如果当前页面不是最后一页
         if  (!pds.IsLastPage)
         {
             hpl_Next.NavigateUrl = url + "?Page="  + Convert.ToString(CurPage + 1) + Params;
             hpl_Last.NavigateUrl = url + "?Page="  + pds.PageCount.ToString() + Params;
         }
         return  pds;
     }
     #endregion
 
 
     #region Web 窗体设计器生成的代码
     /// <summary>
     /// 初始化
     /// </summary>
     /// <param name="e"></param>
     override  protected  void  OnInit(EventArgs e)
     {
         //
         // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
         //
         InitializeComponent();
         base .OnInit(e);
     }
 
     /// <summary>
     /// 设计器支持所需的方法 - 不要使用代码编辑器
     /// 界面设计的变现内容
     /// </summary>
     private  void  InitializeComponent()
     {
         this .Load += new  System.EventHandler( this .Page_Load);
     }
     #endregion
 
 
     #region 跳转到
     /// <summary>
     /// 跳转到
     /// </summary>
     /// <param name="sender"></param>
     /// <param name="e"></param>
     protected  void  lbtn_goto_Click( object  sender, EventArgs e)
     {
         if  (Convert.ToInt32(txb_Page.Text) > Convert.ToInt32( this .lbl_PageCount.Text))
         {
             Response.Redirect(ViewState[ "pageUrl" ] + "?Page="  + lbl_PageCount.Text + ViewState[ "pageParams" ]);
         }
         else
         {
             Response.Redirect(ViewState[ "pageUrl" ] + "?Page="  + txb_Page.Text + ViewState[ "pageParams" ]);
         }
     }
     #endregion
 
 
 
}

 

页面调用:

<%@ Register Src="../UserControl/Pager.ascx" TagName="Pager" TagPrefix="uc" %>

html代码:

<uc:Pager ID="Pager" runat="server"></uc:Pager>

最后页面后台给分页控件赋值,调用PagerDataBind()方法。

//获取 域名
                string MainName=HttpContext.Current.Request.Url.Host;
                //获取 站点名+页面名:
                string url = HttpContext.Current.Request.Url.AbsolutePath;
                //获取 端口:
                int port = HttpContext.Current.Request.Url.Port;
                webpage.url = string.Format(@"http://" + MainName +":"+ port + url);

---------------------------------

总结:分页效率一般,不是很好,但是很便利,适合2k到3k的数据量。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值