gengen'blog

研究探讨asp.net,js,html,c#
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
DataList分页(与Repeater控件的例子相似,都以pubs数据库中的authors为例)
2006年12月27日 星期三 10:10

DataList控件和Repeater控件的分页显示方法很相似,都是借助PagedDataSource类来实现,该类封装了DataGrid控件的分页属性.

1首先在页前代码:

 <ItemTemplate>
     <%#DataBinder.Eval(Container.DataItem,"address")%>
     <%#DataBinder.Eval(Container.DataItem,"city")%>
     <%#DataBinder.Eval(Container.DataItem,"zip")%>
    </ItemTemplate>

2、然后在后台代码
  private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面
   if(!IsPostBack)
   {
    DataListDataBind();}
  }

其次定义一个数据绑定的方法

private void DataListDataBind()
  {
   SqlConnection conn=new SqlConnection(ConfigurationSettings.AppSettings["con"].ToString());
   string sql="select address,city,zip from authors";
   SqlDataAdapter da=new SqlDataAdapter(sql,conn);
   DataSet ds=new DataSet();
   try
   {
    da.Fill(ds,"authors");
    PagedDataSource objPage1=new PagedDataSource();
    objPage1.DataSource=ds.Tables["authors"].DefaultView;
    objPage1.AllowPaging=true;
    objPage1.PageSize=5;
    int curPage;
    if(Request.QueryString["Page"]!=null)
     curPage=Convert.ToInt32(Request.QueryString["Page"]);
    else
     curPage=1;
    objPage1.CurrentPageIndex=curPage-1;
    this.Label2.Text="当前页:第"+curPage.ToString()+"页";
    if(!objPage1.IsFirstPage)
    {
     this.HyperLink3.NavigateUrl=Request.CurrentExecutionFilePath+"?Page="+Convert.ToString(curPage-1);
    }
    if(!objPage1.IsLastPage)
    {
     this.HyperLink4.NavigateUrl=Request.CurrentExecutionFilePath+"?Page="+Convert.ToString(curPage+1);
    }
    this.DataList1.DataSource=objPage1;
    this.DataList1.DataBind();
   }
   catch(Exception error)
   {
    Response.Write(error.ToString());
   }