当前位置:中国站长下载文章中心网页编程.NET编程 → 一个功能齐全的DataGrid分页例子

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

减小字体 增大字体 作者:不详  来源:不详  发布时间:2006-8-14 9:42:43
     C#版本
  
  DataGridPaging.aspx
  
  <%@ 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> 
   <asp:label id="lblCurrentIndex" runat="server"></asp:label>
   <asp:linkbutton id="btnFirst" runat="server" Font-Name="verdana"
   Font-size="8pt" ForeColor="navy" CommandArgument="0"></asp:linkbutton> 
   <asp:linkbutton id="btnPrev" runat="server" Font-Name="verdana"
   Font-size="8pt" ForeColor="navy" CommandArgument="prev"></asp:linkbutton> 
   <asp:linkbutton id="btnNext" runat="server" Font-Name="verdana"
   Font-size="8pt" ForeColor="navy" CommandArgument="next"></asp:linkbutton> 
   <asp:linkbutton id="btnLast" runat="server" Font-Name="verdana"
   Font-size="8pt" ForeColor="navy" CommandArgument="last"></asp:linkbutton>
  </p>
  </form>
  </body>
  </HTML>
  
  DataGridPaging.aspx.cs
  
  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("xxxx.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

[1] [2]  下一页