Asp.net中使用PageDataSource分页实现代码

  

复制代码 代码如下:

  注:封装数据绑定控件(如 System.Web.UI.WebControls.DataGrid、System.Web.UI.WebControls.GridView、System.Web.UI.WebControls.DetailsView

  //     和 System.Web.UI.WebControls.FormView)的与分页相关的属性,以允许该控件执行分页操作。无法继承此类。

  DataList

  public DataTable GetDataSet(string sql)

  {

  SqlConnection conn = this.getconn();

  SqlDataAdapter sdr = new SqlDataAdapter(sql, conn);

  DataSet rs = new DataSet();

  sdr.Fill(rs);

  return rs.Tables[0];

  }

  public PagedDataSource PageDataListBind(string sql, int currentPage, int PageSize)

  {

  PagedDataSource pds = new PagedDataSource();

  pds.DataSource = GetDataSet(sql).DefaultView;

  pds.AllowPaging = true;

  pds.PageSize = PageSize;

  pds.CurrentPageIndex = currentPage - 1;

  return pds;

  }

  DB db = new DB();

  PagedDataSource pds = new PagedDataSource();

  protected void Page_Load(object sender, EventArgs e)

  {

  if (!IsPostBack)

  {

  bind();

  }

  }

  public void bind()

  {

  pds = db.PageDataListBind("select * from tb_word",Convert.ToInt32(lblCurrentPage.Text),2);

  lnkBtnFirst.Enabled = true;

  lnkBtnLast.Enabled = true;

  lnkBtnPrevious.Enabled = true;

  lnkBtnNext.Enabled = true;

  if (lblCurrentPage.Text == "1")

  {

  lnkBtnFirst.Enabled = false;

  lnkBtnPrevious.Enabled = false;

  }

  if(lblCurrentPage.Text==pds.PageCount.ToString())

  {

  lnkBtnLast.Enabled = false;

  lnkBtnNext.Enabled = false;

  }

  lblSumPage.Text = pds.PageCount.ToString();

  DataList1.DataSource = pds;

  DataList1.DataKeyField = "ID";

  DataList1.DataBind();

  }

  protected void lnkBtnFirst_Click(object sender, EventArgs e)

  {

  lblCurrentPage.Text = "1";

  bind();

  }

  protected void lnkBtnPrevious_Click(object sender, EventArgs e)

  {

  lblCurrentPage.Text = (Convert.ToInt32(lblCurrentPage.Text) - 1).ToString();

  bind();

  }

  protected void lnkBtnNext_Click(object sender, EventArgs e)

  {

  lblCurrentPage.Text = (Convert.ToInt32(lblCurrentPage.Text) + 1).ToString();

  bind();

  }

  protected void lnkBtnLast_Click(object sender, EventArgs e)

  {

  lblCurrentPage.Text = lblSumPage.Text;

  bind();

  }

  <form id="form1" runat="server">

  <div>

  <asp:DataList ID="DataList1" runat="server">

  <ItemTemplate>

  <table border="1">

  <tr>

  <td>ID</td><td>标题</td><td>内容</td>

  </tr>

  <tr>

  <td><%#Eval("ID") %></td>

  <td><%#Eval("Title") %></td>

  <td><%#Eval("Content") %></td>

  </tr>

  </table>

  </ItemTemplate>

  </asp:DataList>

  当前页码为[<asp:Label ID="lblCurrentPage" runat="server" Text="1"></asp:Label>]页

  总页码[<asp:Label

  ID="lblSumPage" runat="server" Text="0"></asp:Label>]页

  <asp:LinkButton ID="lnkBtnFirst" runat="server" Font-Underline="False" OnClick="lnkBtnFirst_Click" > 第一页 </asp:LinkButton>

  <asp:LinkButton ID="lnkBtnPrevious" runat="server" Font-Underline="False" OnClick="lnkBtnPrevious_Click" > 上一页 </asp:LinkButton>

  <asp:LinkButton ID="lnkBtnNext" runat="server" Font-Underline="False" OnClick="lnkBtnNext_Click" > 下一页 </asp:LinkButton>

  <asp:LinkButton ID="lnkBtnLast" runat="server" Font-Underline="False" OnClick="lnkBtnLast_Click"> 末一页 </asp:LinkButton>

  </div>

  </form>