一個功能齊全的DataGrid分頁例子

新建一個access數據庫:db1 在數據庫中建表Document 裏邊有兩個字段CreateDate和Title
 在.aspx的頁面中建立相應控件:
代碼如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
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 eMeng.Exam.DataGridPaging
{
 /// <summary>
 /// DataGridPaging 的摘要說明。
 /// </summary>
 public class DataGridPaging : System.Web.UI.Page
 {
  protected System.Web.UI.WebControls.DataGrid MyDataGrid;
  protected System.Web.UI.WebControls.Label lblPageCount;
  protected System.Web.UI.WebControls.Label lblCurrentIndex;
  protected System.Web.UI.WebControls.LinkButton btnFirst;
  protected System.Web.UI.WebControls.LinkButton btnPrev;
  protected System.Web.UI.WebControls.LinkButton btnNext;
  protected System.Web.UI.WebControls.LinkButton btnLast;
  private OleDbConnection cn = new OleDbConnection();

  private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此處放置用戶代碼以初始化頁面
   btnFirst.Text = "最首頁";
   btnPrev.Text = "前一頁";
   btnNext.Text = "下一頁";
   btnLast.Text = "最後頁";
   OpenDatabase();
   BindGrid();
  }
  private void OpenDatabase()
  {
   cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("db1.mdb");
   cn.Open();
  }
  private void ShowStats()
  {
   lblCurrentIndex.Text = "第 " + (MyDataGrid.CurrentPageIndex + 1).ToString() + " 頁";
   lblPageCount.Text = "總共 " + MyDataGrid.PageCount.ToString() + " 頁";
  }

  public void PagerButtonClick(object sender, EventArgs e)
  {
   string arg = ((LinkButton)sender).CommandArgument.ToString();
   switch(arg)
   {
    case "next":
     if (MyDataGrid.CurrentPageIndex < (MyDataGrid.PageCount - 1))
     {
      MyDataGrid.CurrentPageIndex += 1;
     }
     break;
    case "prev":
     if (MyDataGrid.CurrentPageIndex > 0)
     {
      MyDataGrid.CurrentPageIndex -= 1;
     }
     break;
    case "last":
     MyDataGrid.CurrentPageIndex = (MyDataGrid.PageCount - 1);
     break;
    default:
     MyDataGrid.CurrentPageIndex = System.Convert.ToInt32(arg);
     break;
   }
   BindGrid();
   ShowStats();
  }
  public void BindGrid()
  {
   OleDbConnection myConnection = cn;
   DataSet ds  = new DataSet();
   OleDbDataAdapter adapter  = new OleDbDataAdapter("Select Title,CreateDate from Document", myConnection);
   adapter.Fill(ds, "Document");
   MyDataGrid.DataSource = ds.Tables["Document"].DefaultView;
   MyDataGrid.DataBind();
   ShowStats();
  }
  public void MyDataGrid_Page(object sender, DataGridPageChangedEventArgs e)
  {
   int startIndex ;
   startIndex = MyDataGrid.CurrentPageIndex * MyDataGrid.PageSize;
   MyDataGrid.CurrentPageIndex = e.NewPageIndex;
   BindGrid();
   ShowStats();
  }

  #region Web Form Designer generated code
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN:該調用是 ASP.NET Web 窗體設計器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }

  /// <summary>
  /// 設計器支持所需的方法 - 不要使用代碼編輯器修改
  /// 此方法的內容。
  /// </summary>
  private void InitializeComponent()
  {
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion
 }
}

.html代碼如下:
<%@ Page language="c#" EnableViewState = "true" Codebehind="DataGridPaging.aspx.cs"
 AutoEventWireup="false" Inherits="eMeng.Exam.DataGridPaging.DataGridPaging" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <meta content="Visual Basic 7.0" name="CODE_LANGUAGE">
  <meta content="JavaScript" name="vs_defaultClientScript">
  <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
 </HEAD>
 <body MS_POSITIONING="GridLayout">
  <form id="Form1" runat="server">
   <asp:datagrid id="MyDataGrid" runat="server" AutoGenerateColumns="False" HorizontalAlign="Center"
    AlternatingItemStyle-BackColor="#eeeeee" HeaderStyle-BackColor="#aaaadd" Font-Size="8pt" Font-Name="Verdana"
    CellSpacing="0" CellPadding="3" GridLines="Both" BorderWidth="1" BorderColor="black" OnPageIndexChanged="MyDataGrid_Page"
    PagerStyle-HorizontalAlign="Right" PagerStyle-Mode="NumericPages" PageSize="5" AllowPaging="True">
    <AlternatingItemStyle BackColor="#EEEEEE"></AlternatingItemStyle>
    <HeaderStyle BackColor="#AAAADD" Font-Bold="True" HorizontalAlign="Center"></HeaderStyle>
    <PagerStyle HorizontalAlign="Right" Mode="NumericPages"></PagerStyle>
    <Columns>
     <asp:BoundColumn HeaderText="標題" DataField="Title" HeaderStyle-Width="480px"></asp:BoundColumn>
     <asp:BoundColumn HeaderText="發表日期" DataField="CreateDate" DataFormatString="{0:yyyy-MM-dd hh:mm:ss}"></asp:BoundColumn>
    </Columns>
   </asp:datagrid>
   <p style="FONT-SIZE:9pt" align="center">
    <asp:label id="lblPageCount" runat="server"></asp:label>&nbsp;
    <asp:label id="lblCurrentIndex" runat="server"></asp:label>
    <asp:linkbutton id="btnFirst" onclick="PagerButtonClick" runat="server" Font-Name="verdana" Font-size="8pt"
     ForeColor="navy" CommandArgument="0"></asp:linkbutton>&nbsp;
    <asp:linkbutton id="btnPrev" onclick="PagerButtonClick" runat="server" Font-Name="verdana" Font-size="8pt"
     ForeColor="navy" CommandArgument="prev"></asp:linkbutton>&nbsp;
    <asp:linkbutton id="btnNext" onclick="PagerButtonClick" runat="server" Font-Name="verdana" Font-size="8pt"
     ForeColor="navy" CommandArgument="next"></asp:linkbutton>&nbsp;
    <asp:linkbutton id="btnLast" onclick="PagerButtonClick" runat="server" Font-Name="verdana" Font-size="8pt"
     ForeColor="navy" CommandArgument="last"></asp:linkbutton>
   </p>
  </form>
 </body>
</HTML>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章