用过asp开发过web程序的人都知道,分页让asp程序员是一件非常头痛的事,我在这就来说说用asp.net轻松打造的分页技术. 第一步我们在vs.net新建项目,这些我不说了,你自己搞定吧,我在这里主要贴出重要的代码. 1.webform1.aspx <%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="page.WebForm1" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <HTML> <HEAD> <title>WebForm1</title> <meta content="Microsoft Visual Studio 7.0" name="GENERATOR"> <meta content="C#" 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" method="post" runat="server"> <table align="center"> <tr> <td style="HEIGHT: 104px" colspan=2><asp:datagrid id="DataGrid1" runat="server" PageSize="5" Font-Size="8pt" Font-Names="Verdana" BorderWidth="1px" BackColor="#FFE0C0" BorderColor="#FFC080" HorizontalAlign="Center" CellPadding="3" AllowPaging="True" Height="152px" Width="700px"> <AlternatingItemStyle BackColor="Linen"> </AlternatingItemStyle> <ItemStyle VerticalAlign="Bottom"> </ItemStyle> <HeaderStyle HorizontalAlign="Center" VerticalAlign="Bottom" BackColor="#FF8000"> </HeaderStyle> <FooterStyle HorizontalAlign="Justify" BackColor="White"> </FooterStyle> <PagerStyle HorizontalAlign="Right" ForeColor="Red" Mode="NumericPages"> </PagerStyle> </asp:datagrid></td> </tr> <tr align="middle"> <td align=left><font size=2>一共</font> <asp:Label ID="lblallcount" Runat=server Font-size="8pt" ForeColor="#0000ff" font-names="verdana"></asp:Label> <font size=2>记录</font> <font size="2">共</font> <asp:label id="lblpagecount" runat="server" Font-Size="8pt" ForeColor="#0000ff" Font-Names="Verdana"></asp:label> <font size="2">页</font> <font size="2">第</font> <asp:label id="lblcurrentindex" runat="server" Font-Size="8pt" ForeColor="#0000ff" Font-Names="Verdana"></asp:label> <font size="2">页</font></td> <td align=right><asp:linkbutton id="first" runat="server" font-size="8pt" ForeColor="#3300ff" CommandArgument="first" Font-Names="Verdana"></asp:linkbutton> <asp:linkbutton id="prev" Font-Size="8pt" ForeColor="#3300ff" CommandArgument="prev" Runat="server" Font-Names="Verdana"></asp:linkbutton> <asp:linkbutton id="next" Font-Size="8pt" ForeColor="#3300ff" CommandArgument="next" Runat="server" Font-Names="Verdana"></asp:linkbutton> <asp:linkbutton id="last" Font-Size="8pt" ForeColor="#3300ff" CommandArgument="last" Runat="server" Font-Names="Verdana"></asp:linkbutton> <font size="2">跳转到第</font><asp:TextBox ID="to" Runat="server" Columns="1" /><font size="2">页</font><asp:Button ID="go" Text="GO" Runat="server" BackColor="WhiteSmoke" Font-Names="Verdana"/> </td> </tr> </table> </form> </body> </HTML>
2.webform1.cs 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; using System.Data.SqlClient; namespace page { /// <summary> /// WebForm1 的摘要说明。 /// </summary> public class WebForm1 : System.Web.UI.Page { protected System.Web.UI.WebControls.Label lblpagecount; protected System.Web.UI.WebControls.Label lblcurrentindex; protected System.Web.UI.WebControls.LinkButton first; protected System.Web.UI.WebControls.LinkButton prev; protected System.Web.UI.WebControls.LinkButton next; protected System.Web.UI.WebControls.DataGrid DataGrid1; protected System.Web.UI.WebControls.TextBox to; protected System.Web.UI.WebControls.Button go; protected System.Web.UI.WebControls.Label lblallcount; protected System.Web.UI.WebControls.LinkButton last; void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 first.Text="最首页"; prev.Text="前一页"; next.Text="下一页"; last.Text="最后页"; if(!IsPostBack) { BindGrid(); } } #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.DataGrid1.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.Page_Changed); this.first.Click += new System.EventHandler(this.btnClick); this.prev.Click += new System.EventHandler(this.btnClick); this.next.Click += new System.EventHandler(this.btnClick); this.last.Click += new System.EventHandler(this.btnClick); this.go.Click += new System.EventHandler(this.goClick); this.Load += new System.EventHandler(this.Page_Load); } #endregion void Page_Changed(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e) { DataGrid1.CurrentPageIndex=e.NewPageIndex; BindGrid(); } void BindGrid() { SqlConnection cn=new SqlConnection("server=localhost;database=pubs;uid=sa;pwd="); cn.Open(); SqlDataAdapter da=new SqlDataAdapter("select * from authors",cn); DataSet ds=new DataSet(); da.Fill(ds,"authors"); DataGrid1.DataSource=ds.Tables["authors"].DefaultView; DataGrid1.DataBind(); cn.Close(); showstate(); } void showstate() { SqlConnection cn=new SqlConnection("server=localhost;database=pubs;uid=sa;pwd="); cn.Open(); SqlDataAdapter da=new SqlDataAdapter("select * from authors",cn); DataSet ds=new DataSet(); da.Fill(ds,"authors"); DataTable dt=ds.Tables["authors"]; int count=dt.Rows.Count; lblallcount.Text=count.ToString(); lblpagecount.Text=DataGrid1.PageCount.ToString(); lblcurrentindex.Text=(DataGrid1.CurrentPageIndex+1).ToString(); } void btnClick(object sender,System.EventArgs e) { string arg=((LinkButton)sender).CommandArgument; switch(arg) { case ("first"): DataGrid1.CurrentPageIndex=0; break; case ("prev"): if(DataGrid1.CurrentPageIndex>0) DataGrid1.CurrentPageIndex--; break; case ("next"): if(DataGrid1.CurrentPageIndex<(DataGrid1.PageCount-1)) DataGrid1.CurrentPageIndex++; break; case ("last"): DataGrid1.CurrentPageIndex=DataGrid1.PageCount-1; break; default: DataGrid1.CurrentPageIndex=Convert.ToInt32(arg); break; } BindGrid(); } private void goClick(object sender, System.EventArgs e) { if(to.Text.Trim()!="") { int index=Int32.Parse(to.Text.Trim())-1; if(index>=0&&index<DataGrid1.PageCount) { DataGrid1.CurrentPageIndex=index; } } BindGrid(); } } } 好了,现在这个分页的web 程序完成了,你去试试.
|