一个功能齐全的DataGrid分页例子

C#版本 例子

 

 1 <%@ Page language="c#" EnableViewState = "true" Codebehind="DataGridPaging.aspx.cs"
 2  AutoEventWireup="false" Inherits="eMeng.Exam.DataGridPaging.DataGridPaging" %>
 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 4 <HTML>
 5 <HEAD>
 6 <meta content="Visual Basic 7.0" name="CODE_LANGUAGE">
 7 <meta content="JavaScript" name="vs_defaultClientScript">
 8 <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
 9 </HEAD>
10 <body MS_POSITIONING="GridLayout">
11 <form id="Form1" runat="server">
12 <asp:datagrid id="MyDataGrid" runat="server" AutoGenerateColumns="False"
13     HorizontalAlign="Center" AlternatingItemStyle-BackColor="#eeeeee"
14     HeaderStyle-BackColor="#aaaadd" Font-Size="8pt" Font-Name="Verdana"
15     CellSpacing="0" CellPadding="3" GridLines="Both" BorderWidth="1"
16     BorderColor="black" OnPageIndexChanged="MyDataGrid_Page" PagerStyle-HorizontalAlign="Right"
17     PagerStyle-Mode="NumericPages" PageSize="5" AllowPaging="True">
18   <AlternatingItemStyle BackColor="#EEEEEE"></AlternatingItemStyle>
19   <HeaderStyle BackColor="#AAAADD" Font-Bold="True" HorizontalAlign="Center"></HeaderStyle>
20   <PagerStyle HorizontalAlign="Right" Mode="NumericPages"></PagerStyle>
21   <Columns>
22   <asp:BoundColumn HeaderText="标题" DataField="Title" HeaderStyle-Width="480px">
23   </asp:BoundColumn>
24   <asp:BoundColumn HeaderText="发表日期" DataField="CreateDate" DataFormatString="{0:yyyy-MM-dd hh:mm:ss}">
25   </asp:BoundColumn>
26   </Columns>
27 </asp:datagrid>
28 <style="FONT-SIZE:9pt" align="center">
29   <asp:label id="lblPageCount" runat="server"></asp:label>&nbsp;
30   <asp:label id="lblCurrentIndex" runat="server"></asp:label>
31   <asp:linkbutton id="btnFirst" onclick="PagerButtonClick" runat="server" Font-Name="verdana"
32       Font-size="8pt" ForeColor="navy" CommandArgument="0"></asp:linkbutton>&nbsp;
33   <asp:linkbutton id="btnPrev" onclick="PagerButtonClick" runat="server" Font-Name="verdana"
34       Font-size="8pt" ForeColor="navy" CommandArgument="prev"></asp:linkbutton>&nbsp;
35   <asp:linkbutton id="btnNext" onclick="PagerButtonClick" runat="server" Font-Name="verdana"
36       Font-size="8pt" ForeColor="navy" CommandArgument="next"></asp:linkbutton>&nbsp;
37   <asp:linkbutton id="btnLast" onclick="PagerButtonClick" runat="server" Font-Name="verdana"
38       Font-size="8pt" ForeColor="navy" CommandArgument="last"></asp:linkbutton>
39 </p>
40 </form>
41 </body>
42 </HTML>

 

DataGridPaging.aspx.cs

 

  1 using System;
  2 using System.Collections;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Data.OleDb;
  6 using System.Drawing;
  7 using System.Web;
  8 using System.Web.SessionState;
  9 using System.Web.UI;
 10 using System.Web.UI.WebControls;
 11 using System.Web.UI.HtmlControls;
 12 
 13 namespace eMeng.Exam.DataGridPaging
 14 {
 15 /// <summary>
 16 /// DataGridPaging 的摘要说明。
 17 /// </summary>
 18 public class DataGridPaging : System.Web.UI.Page
 19 {
 20  protected System.Web.UI.WebControls.DataGrid MyDataGrid;
 21  protected System.Web.UI.WebControls.Label lblPageCount;
 22  protected System.Web.UI.WebControls.Label lblCurrentIndex;
 23  protected System.Web.UI.WebControls.LinkButton btnFirst;
 24  protected System.Web.UI.WebControls.LinkButton btnPrev;
 25  protected System.Web.UI.WebControls.LinkButton btnNext;
 26  protected System.Web.UI.WebControls.LinkButton btnLast;
 27  private OleDbConnection cn = new OleDbConnection();
 28 
 29 private void Page_Load(object sender, System.EventArgs e)
 30 {
 31   // 在此处放置用户代码以初始化页面
 32   btnFirst.Text = "最首页";
 33   btnPrev.Text = "前一页";
 34   btnNext.Text = "下一页";
 35   btnLast.Text = "最后页";
 36   OpenDatabase();
 37   BindGrid();
 38 }
 39 private void OpenDatabase()
 40 {
 41  cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("xxxx.mdb");
 42  cn.Open();
 43 }
 44 private void ShowStats()
 45 {
 46  lblCurrentIndex.Text = "第 " + (MyDataGrid.CurrentPageIndex + 1).ToString() + " 页";
 47  lblPageCount.Text = "总共 " + MyDataGrid.PageCount.ToString() + " 页";
 48 }
 49 
 50 public void PagerButtonClick(object sender, EventArgs e)
 51 {
 52  string arg = ((LinkButton)sender).CommandArgument.ToString();
 53  switch(arg)
 54  {
 55   case "next":
 56    if (MyDataGrid.CurrentPageIndex < (MyDataGrid.PageCount - 1))
 57    {
 58     MyDataGrid.CurrentPageIndex += 1;
 59    }
 60    break;
 61   case "prev":
 62    if (MyDataGrid.CurrentPageIndex > 0)
 63    {
 64     MyDataGrid.CurrentPageIndex -= 1;
 65    }
 66    break;
 67   case "last":
 68    MyDataGrid.CurrentPageIndex = (MyDataGrid.PageCount - 1);
 69    break;
 70   default:
 71    MyDataGrid.CurrentPageIndex = System.Convert.ToInt32(arg);
 72    break;
 73  }
 74  BindGrid();
 75  ShowStats();
 76 }
 77 public void BindGrid()
 78 {
 79  OleDbConnection myConnection = cn;
 80  DataSet ds  = new DataSet();
 81  OleDbDataAdapter adapter  = new OleDbDataAdapter("Select Title,CreateDate from Document", myConnection);
 82  adapter.Fill(ds, "Document");
 83  MyDataGrid.DataSource = ds.Tables["Document"].DefaultView;
 84  MyDataGrid.DataBind();
 85  ShowStats();
 86 }
 87 public void MyDataGrid_Page(object sender, DataGridPageChangedEventArgs e)
 88 {
 89  int startIndex ;
 90  startIndex = MyDataGrid.CurrentPageIndex * MyDataGrid.PageSize;
 91  MyDataGrid.CurrentPageIndex = e.NewPageIndex;
 92  BindGrid();
 93  ShowStats();
 94 }
 95 
 96 #region Web Form Designer generated code
 97 override protected void OnInit(EventArgs e)
 98 {
 99 //
100 // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
101 //
102 InitializeComponent();
103 base.OnInit(e);
104 }
105 
106 /// <summary>
107 /// 设计器支持所需的方法 - 不要使用代码编辑器修改
108 /// 此方法的内容。
109 /// </summary>
110 private void InitializeComponent()
111 {
112 this.Load += new System.EventHandler(this.Page_Load);
113 
114 }
115 #endregion
116 }
117 }

 

方法2:完全后代码写法:例子

DataGridPaging2.aspx

 

 1 <%@ Page language="c#" EnableViewState = "true"  Codebehind="DataGridPaging2.aspx.cs" AutoEventWireup="false"
 2  Inherits="eMeng.Exam.DataGridPaging2.DataGridPaging2" %>
 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 4 <HTML>
 5 <HEAD>
 6   <TITLE>功能齐全的分页的例子【2】</TITLE>
 7   <meta content="Visual Basic 7.0" name="CODE_LANGUAGE">
 8   <meta content="JavaScript" name="vs_defaultClientScript">
 9   <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
10 </HEAD>
11 <body MS_POSITIONING="GridLayout">
12   <form id="Form1" runat="server">
13     <asp:datagrid id="MyDataGrid" runat="server" AutoGenerateColumns="False" HorizontalAlign="Center"
14      AlternatingItemStyle-BackColor="#eeeeee" HeaderStyle-BackColor="#aaaadd" Font-Size="8pt"
15       Font-Name="Verdana" CellSpacing="0" CellPadding="3" GridLines="Both" BorderWidth="1"
16        BorderColor="black" PagerStyle-HorizontalAlign="Right" PagerStyle-Mode="NumericPages"
17         PageSize="5" AllowPaging="True">
18       <AlternatingItemStyle BackColor="#EEEEEE"></AlternatingItemStyle>
19       <HeaderStyle BackColor="#AAAADD" Font-Bold="True" HorizontalAlign="Center"></HeaderStyle>
20       <PagerStyle HorizontalAlign="Right" Mode="NumericPages"></PagerStyle>
21       <Columns>
22         <asp:BoundColumn HeaderText="标题" DataField="Title" HeaderStyle-Width="480px"></asp:BoundColumn>
23         <asp:BoundColumn HeaderText="发表日期" DataField="CreateDate" 
24             DataFormatString="{0:yyyy-MM-dd hh:mm:ss}"></asp:BoundColumn>
25       </Columns>
26     </asp:datagrid>
27     <align="center">
28       <asp:label id="lblPageCount" runat="server" Font-Size="9pt" Font-Bold="True"></asp:label>&nbsp;
29       <asp:label id="lblCurrentIndex" runat="server" Font-Size="9pt" Font-Bold="True"></asp:label>
30       <asp:linkbutton id="btnFirst" runat="server" Font-size="9pt" ForeColor="navy" CommandArgument="0"/>&nbsp;
31       <asp:linkbutton id="btnPrev" runat="server" Font-size="9pt" ForeColor="navy" CommandArgument="prev"/>&nbsp;
32       <asp:linkbutton id="btnNext" runat="server" Font-size="9pt" ForeColor="navy" CommandArgument="next"/>&nbsp;
33       <asp:linkbutton id="btnLast" runat="server" Font-size="9pt" ForeColor="navy" CommandArgument="last"/>
34     </p>
35   </form>
36 </body>
37 </HTML>

 

DataGridPaging2.aspx.cs

 

  1 using System;
  2 using System.Collections;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Data.OleDb;
  6 using System.Drawing;
  7 using System.Web;
  8 using System.Web.SessionState;
  9 using System.Web.UI;
 10 using System.Web.UI.WebControls;
 11 using System.Web.UI.HtmlControls;
 12 
 13 namespace eMeng.Exam.DataGridPaging2
 14 {
 15 /// <summary>
 16 /// DataGridPaging 的摘要说明。
 17 /// </summary>
 18 public class DataGridPaging2 : System.Web.UI.Page
 19 {
 20  protected System.Web.UI.WebControls.DataGrid MyDataGrid;
 21  protected System.Web.UI.WebControls.Label lblPageCount;
 22  protected System.Web.UI.WebControls.Label lblCurrentIndex;
 23  protected System.Web.UI.WebControls.LinkButton btnFirst;
 24  protected System.Web.UI.WebControls.LinkButton btnPrev;
 25  protected System.Web.UI.WebControls.LinkButton btnNext;
 26  protected System.Web.UI.WebControls.LinkButton btnLast;
 27  private OleDbConnection cn = new OleDbConnection();
 28 
 29  private void Page_Load(object sender, System.EventArgs e)
 30  {
 31   // 在此处放置用户代码以初始化页面
 32   btnFirst.Text = "最首页";
 33   btnPrev.Text = "前一页";
 34   btnNext.Text = "下一页";
 35   btnLast.Text = "最后页";
 36   OpenDatabase();
 37   BindGrid();
 38  }
 39  private void OpenDatabase()
 40  {
 41   cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
 42        + HttpContext.Current.Server.MapPath("http://www.cnblogs.com/aspxWeb.mdb.ascx");
 43   cn.Open();
 44  }
 45  private void ShowStats()
 46  {
 47   lblCurrentIndex.Text = "第 " + (MyDataGrid.CurrentPageIndex + 1).ToString() + " 页";
 48   lblPageCount.Text = "总共 " + MyDataGrid.PageCount.ToString() + " 页";
 49  }
 50 
 51  public void PagerButtonClick(object sender, EventArgs e)
 52  {
 53   string arg = ((LinkButton)sender).CommandArgument.ToString();
 54   switch(arg)
 55   {
 56    case "next":
 57     if (MyDataGrid.CurrentPageIndex < (MyDataGrid.PageCount - 1))
 58     {
 59      MyDataGrid.CurrentPageIndex += 1;
 60     }
 61     break;
 62    case "prev":
 63     if (MyDataGrid.CurrentPageIndex > 0)
 64     {
 65      MyDataGrid.CurrentPageIndex -= 1;
 66     }
 67     break;
 68    case "last":
 69     MyDataGrid.CurrentPageIndex = (MyDataGrid.PageCount - 1);
 70     break;
 71    default:
 72     MyDataGrid.CurrentPageIndex = System.Convert.ToInt32(arg);
 73     break;
 74   }
 75   BindGrid();
 76   ShowStats();
 77  }
 78  public void BindGrid()
 79  {
 80   OleDbConnection myConnection = cn;
 81   DataSet ds  = new DataSet();
 82   OleDbDataAdapter adapter  = new OleDbDataAdapter("Select Title,CreateDate from Document", myConnection);
 83   adapter.Fill(ds, "Document");
 84   MyDataGrid.DataSource = ds.Tables["Document"].DefaultView;
 85   MyDataGrid.DataBind();
 86   ShowStats();
 87  }
 88  
 89 #region Web Form Designer generated code
 90  override protected void OnInit(EventArgs e)
 91  {
 92   //
 93   // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
 94   //
 95   InitializeComponent();
 96   base.OnInit(e);
 97  }
 98 
 99  /// <summary>
100  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
101  /// 此方法的内容。
102  /// </summary>
103  private void InitializeComponent()
104  {
105   this.MyDataGrid.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.OnPageIndexChanged);
106   this.btnFirst.Click += new System.EventHandler(this.PagerButtonClick);
107   this.btnPrev.Click += new System.EventHandler(this.PagerButtonClick);
108   this.btnNext.Click += new System.EventHandler(this.PagerButtonClick);
109   this.btnLast.Click += new System.EventHandler(this.PagerButtonClick);
110   this.Load += new System.EventHandler(this.Page_Load);
111 
112  }
113 #endregion
114 
115  private void OnPageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
116  {
117  int startIndex ;
118   startIndex = MyDataGrid.CurrentPageIndex * MyDataGrid.PageSize;
119   MyDataGrid.CurrentPageIndex = e.NewPageIndex;
120   BindGrid();
121   ShowStats();
122  }
123 }
124 }

 

posted @ 2012-03-01 17:21  root7  阅读(182)  评论(0编辑  收藏  举报