ASP源码
PHP源码
.NET源码
JSP源码
出处:snooker_li的专栏
最近做一个相册程序频繁的需要分页,所以就想写一个用户控件出来。
代码如下:
Au***age.ascx页面
<%@ Control Language="c#" AutoEventWireup="false" Codebehind="Au***age.ascx.cs" Inherits="al***.AutoPage" TargetSchema="http://sc***s.microsoft.com/intellisense/ie5
">http://sc***s.microsoft.com/intellisense/ie5" %>共 | 当前 |
Au***age.ascx.cs页面
namespace album
{
using System;
using Sy***m.Data;
using Sy***m.Drawing;
using Sy***m.Web;
using Sy***m.Web.UI.WebControls;
using Sy***m.Web.UI.HtmlControls;
using Sy***m.Data.SqlClient;
///
/// UC 的摘要说明。
///
public class AutoPage : Sy***m.Web.UI.UserControl
{
protected Sy***m.Web.UI.WebControls.HyperLink hpl_First;
protected Sy***m.Web.UI.WebControls.HyperLink hpl_Prev;
protected Sy***m.Web.UI.WebControls.HyperLink hpl_Next;
protected Sy***m.Web.UI.WebControls.Label lb_CurrentPage;
protected Sy***m.Web.UI.WebControls.Label lb_PageCount;
protected Sy***m.Web.UI.WebControls.HyperLink hpl_Last;
public int pagesize;
public string PageP;
protected Sy***m.Web.UI.WebControls.TextBox txb_Page;
protected Sy***m.Web.UI.WebControls.Label lb_url;
protected Sy***m.Web.UI.WebControls.Label lb_ItemCount;
public string url;
protected Sy***m.Web.UI.WebControls.Label lb_Params;
protected Sy***m.Web.UI.WebControls.ImageButton btn_go;
public string Params;
private void Page_Load(object sender, Sy***m.EventArgs e)
{
}
public PagedDataSource databind(DataTable dt)
{
lb***l.Text = url;
lb***rams.Text = Params;
//创建分页类
PagedDataSource objPage = new PagedDataSource();
//设置数据源
ob***ge.DataSource = dt***faultView;
//允许分页
ob***ge.AllowPaging = true;
//设置每页显示的项数
ob***ge.PageSize = pagesize;
//设置当前页的索引
int CurPage=1;
try
{
CurPage = Co***rt.ToInt32(PageP);
if (CurPage<1 || CurPage>ob***ge.PageCount)
{
Re***nse.Redirect(url+"?page=1"+Params);
}
}
catch
{
Re***nse.Redirect(url+"?page=1"+Params);
}
ob***ge.CurrentPageIndex = CurPage-1;
//显示状态信息
lb***emCount.Text = dt***ws.Count.ToString();
lb***rrentPage.Text = Cu***ge.ToString();
lb***geCount.Text =ob***ge.PageCount.ToString();
//如果当前页面不是首页
if (!ob***ge.IsFirstPage)
{
hp***rev.NavigateUrl=url + "?Page=" + Co***rt.ToString(CurPage-1)+Params;
hp***irst.NavigateUrl=url + "?Page=1"+Params;
}
//如果当前页面不是最后一页
if (!ob***ge.IsLastPage)
{
hp***ext.NavigateUrl=url+ "?Page=" + Co***rt.ToString(CurPage+1)+Params;
hp***ast.NavigateUrl=url + "?Page=" +ob***ge.PageCount.ToString()+Params;
}
return objPage;
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
ba***OnInit(e);
}
///
/// 设计器支持所需的方法 - 不要使用代码编辑器
/// 修改此方法的内容。
///
private void InitializeComponent()
{
th***btn_go.Click += new Sy***m.Web.UI.ImageClickEventHandler(th***btn_go_Click);
th***Load += new Sy***m.EventHandler(th***Page_Load);
}
#endregion
private void btn_go_Click(object sender, Sy***m.Web.UI.ImageClickEventArgs e)
{
Re***nse.Redirect(lb***l.Text+"?Page="+tx***age.Text+lb***rams.Text);
}
}
}
调用的时候需要设置几个参数pagesize(每页显示数据个数),PageP(传递的分页参数),ParmP(其他的Re***st.QureyString参数),url(页面地址)
绑定的时候只需要把控件的Da***ource=AutoPage1.databind(DataTable变量)