DataList使用System.Web.UI.WebControls.PagedDataSource分页

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace DataListPager
{
 /// <summary>
 /// WebForm1 的摘要说明。
 /// </summary>
 ///
 
 
   
 public class WebForm1 : System.Web.UI.Page
 {
  protected System.Web.UI.WebControls.DataList dlMessage;
  protected System.Web.UI.WebControls.Label lblCurPage;
  protected System.Web.UI.WebControls.HyperLink lnkPrev;
  protected System.Web.UI.WebControls.HyperLink lnkNext;
  protected System.Web.UI.WebControls.Button Button1;
  protected System.Web.UI.WebControls.Button Button2;
     DAL.DAL dal=new DAL.DAL();
  System.Web.UI.WebControls.PagedDataSource page=new PagedDataSource();
  private void Page_Load(object sender, System.EventArgs e)
  {
   if ( ! Page.IsPostBack)
   {
    Bind();
    
   }
  }
  
  /*
   * 首先创建一个分页类的实例
   * 再设置其数据源-DataSource属性(原来也有DataSource属性)sh
   *
   * 和DataGrid一样要设置一些属性
   * 设置允许分页 AllowPaging属性
   * 设置每页显示的项数 PageSize属性
   *
   * 设置索引
   * a.定义一变量存放当前页索引
   * b.设置索引的默认值
   * b.1 先判断页面是否有页面跳转请求
   * b.2 有则索引的值为跳转是的参数(Requst["Page"]),否则值为1.
   * c.可以显示以下状态信息-即分页信息.
   * d.判断是不是首页,否则link的url为 Request.CurrentExecutionFilePath + "?Page=" +Convert.ToString(curPage-1);
   * CurrentExecutionFilePath 当前页面所在的虚拟路径(相对路径)--\DataListPager\WebForm1.aspx
   * (原来Request还可这样用,这么多微不足道,举足轻重的东西实在太多了)
   * */

  private void Bind()
  {
   string strSql = "Select * from message";
   DataSet ds = new DataSet();
   ds = dal.GetDataSet(strSql);

   /* 创建分页类*/
   //System.Web.UI.WebControls.PagedDataSource page=new PagedDataSource();

   /* 设置数据原*/
   page.DataSource=ds.Tables[0].DefaultView;

   /* 设置分页属性*/
   page.AllowPaging=true;//允许分页
   page.PageSize=8;//设置每页显示的项数(记录数)

   /* 下面是重要部分,分页的实现*/

   int curPage;//存放当前页索引

   if(Request["Page"] != null)//是否有页面跳转请求
   {
    curPage = Convert.ToInt32(Request["Page"]);
   }
   else
   {
    curPage = 1;
   }
   page.CurrentPageIndex = curPage-1;//设置当前页的索引
   //显示状态信息
   lblCurPage.Text = "当前页:第" + curPage.ToString()+"页";

   if(!page.IsFirstPage)//如果不是当前页,link可用。
   {
    this.lnkPrev.NavigateUrl=Request.CurrentExecutionFilePath + "?Page=" +Convert.ToString(curPage-1);
   }
   if( ! page.IsLastPage)
   {
    this.lnkNext.NavigateUrl=Request.CurrentExecutionFilePath + "?Page=" +Convert.ToString(curPage+1);
   }
   if(page.FirstIndexInPage==0)
   {
    this.Button1.Enabled=false;
   }
   if(page.CurrentPageIndex==ds.Tables[0].Rows.Count/page.PageSize)
   {
    this.Button2.Enabled=false;
   }

   this.dlMessage.DataSource = page;
   this.dlMessage.DataBind();

  }
  

  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {   
   this.Button1.Click += new System.EventHandler(this.Button1_Click);
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion

    }
 }
}

人的一生应该这样度过:当他回首往事的时候,不会因为虚度年华而悔恨,也不会因为碌碌无为而羞愧。
原文地址:https://www.cnblogs.com/htht66/p/883737.html