/*----------------------------------------
使用类似ASP分页的方法来对ASP.NET实现分页
原创:caiyakang
功能:使用封装在DataGrid中的System.Web.UI.WebControls.PageDataSource
来实现Repeater,DataList分页.
此方法类似ASP的分页方法
--------------------------------------*/
代码如下:
private string PTypeID; //将要显示的栏目编号
private int PageNo; //当前页
//绑定到DataList
private void BindToDataList(int pageno)
{
....取得数据源省略,就是myar.GetDataSource为得到数据源.
System.Web.UI.WebControls.PagedDataSource pds=new PagedDataSource(); //创建分页实例
pds.DataSource=myar.GetDataSource.DefaultView; //绑定数据源到分页实例上,一定要绑定要DefaultView
pds.AllowPaging=true; //允许分页
pds.PageSize=12; //每页大小
if(pageno<1) //判断当前页
{
pageno=1;
}
if(pageno>pds.PageCount) //判断当前页
{
pageno=pds.PageCount;
}
pds.CurrentPageIndex=pageno-1;//因为真正显示的时候,页数是从0开始,所以要减1
this.DLPhoto.DataSource=pds; //把分页实例作为DataList的数据源
this.DLPhoto.DataBind();
string url="PhotoView.aspx?pid="+this.PhotoID;
string pagestring=myar.showpage(pageno,pds.PageCount,pds.DataSourceCount,url,pds.PageSize,"条评论");
this.LabPage.Text=pagestring;
myar.GetDataSource.Clear();
}
我是根据自已常用的ASP分页进行改的,所以以下很类似ASP中的分页.
/*参数:
PageNo:当前页
TotalPage:总页数
TotalCount:总数量
url链接地址
PageSize:每页大小
unit:...;
*/
public string showpage(int PageNo,int TotalPage,int TotalCount,string url,int PageSize,string unit)
{
string PageMsg;
PageMsg="共有<b><font color='blue'>"+TotalCount+"</font></b>"+unit+" ";
PageMsg=PageMsg+"<b><font color='red'>"+PageNo+"</font></b>";
PageMsg=PageMsg+"/<b><font color='blue'>"+TotalPage+"</font></b> ";
if(PageNo==1)
{
PageMsg=PageMsg+"首页 ";
PageMsg=PageMsg+"上一页 ";
}
else
{
PageMsg=PageMsg+"<a href="+url+"&page=1>首页</a> ";
PageMsg=PageMsg+"<a href="+url+"&page="+(PageNo-1)+">上一页</a> ";
}
if(PageNo==TotalPage)
{
PageMsg=PageMsg+"下一页 ";
PageMsg=PageMsg+"尾页 ";
}
else
{
PageMsg=PageMsg+"<a href="+url+"&page="+(PageNo+1)+">下一页 </a> ";
PageMsg=PageMsg+"<a href="+url+"&page="+TotalPage+">尾页 </a> ";
}
PageMsg=PageMsg+PageSize+"<b><font color='blue'>"+unit+"</font></b>/页";
return PageMsg;
}
private void Page_Load(object sender, System.EventArgs e)
{
this.PTypeID=Request.QueryString["ptid"].ToString(); //得到栏目编号号
this.PageNo=Convert.ToInt32(Request.QueryString["page"]);//得到当前页
if(!this.IsPostBack)
{
this.BindToDataList(this.PageNo);//对当前页进行数据绑定
}
}
顺便求个Asp.Net Forums2.0源码~网上实在没找到!!
谢谢了