此分页方式与传统ASP分页方式相仿。
DataGridPage.aspx
以下为引用的内容: <%@ Page language="c#" Codebehind="DataGridPage.aspx.cs" AutoEventWireup="false" Inherits="netCRM.DataGridPage" %> http://schemas.microsoft.com/intellisense/ie5"> |
DataGridPage.aspx.cs
以下为引用的内容: using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Data.SqlClient; 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 netCRM { /// /// DataGridPage 的摘要说明。 /// public class DataGridPage : System.Web.UI.Page { protected System.Web.UI.WebControls.Literal Literal1; protected System.Web.UI.WebControls.Literal Literal2; protected System.Web.UI.WebControls.DataGrid DataGrid1; private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 if(!IsPostBack) { BindGrid(); } } private void BindGrid() { string connstring = "Server=.;Database=NorthWind;User Id=sa;Password=;"; string sql="Select * from Orders"; SqlConnection conn = new SqlConnection(connstring); conn.Open(); DataSet ds = new DataSet(); SqlDataAdapter sqlAdapter = new SqlDataAdapter(sql,conn); sqlAdapter.Fill(ds,"users"); DataView dataview = new DataView(); dataview = ds.Tables[0].DefaultView; DataGrid1.DataSource = ds.Tables[0].DefaultView; DataGrid1.DataBind(); string cPage; int pageSize = 10; int currentPage; int pageCount; int numResults = 0; if (Request.QueryString["page"]==null) { cPage="1"; } else { cPage=Request.QueryString["page"].ToString(); } try { currentPage = Int32.Parse(cPage); } catch { currentPage = 1; } numResults = 0; int start = (int)((currentPage - 1) * pageSize); int to = (int)(currentPage * pageSize); if (start <= 0) start = 0; numResults = dataview.Count; int a1=0; pageCount = Math.DivRem(numResults,pageSize,out a1); if (a1>0) { pageCount++; } if(currentPage>pageCount || currentPage<=0) { currentPage = 1; } if(currentPage==pageCount) { to = dataview.Count; } // Create one DataTable with one column. DataTable myTable = new DataTable("myTable"); myTable = dataview.Table.Clone(); //DataColumn colItem1 = new DataColumn("name",Type.GetType("System.String")); //DataColumn colItem2 = new DataColumn("types",Type.GetType("System.String")); //DataColumn colItem3 = new DataColumn("vendor",Type.GetType("System.String")); //myTable.Columns.Add(colItem1); //myTable.Columns.Add(colItem2); //myTable.Columns.Add(colItem3); //add row DataRow NewRow; for(int i=start;i if(i NewRow = myTable.NewRow(); for(int k=0;k NewRow[k] = dataview.Table.Rows[i][k]; } myTable.Rows.Add(NewRow); } } myTable.AcceptChanges(); DataView resultDataview = new DataView(myTable); DataGrid1.DataSource = resultDataview; DataGrid1.DataBind(); /// /// 生成页导航条。 /// string strNav = ""; int endpage; if (currentPage>1) { strNav += "上一页 "; } if (currentPage>11) { strNav += "1 ..."; } if(pageCount>currentPage+10) { endpage = currentPage+10; } else { endpage = pageCount; } for (int i=currentPage-10;i if(i>=1) { if (i==currentPage) { strNav +=""+ i.ToString() +" "; } else { strNav += ""+ i.ToString() +" "; } } } if((currentPage+10) strNav += "... "+ pageCount.ToString() +""; } if(currentPage strNav += " 下一页 "; } Literal1.Text = strNav; Literal2.Text = "共 "+ numResults.ToString() +" 条供应信息,当前显示第 "+ (start+1).ToString() +" - "+ to.ToString() +" 条,共 "+ pageCount.ToString() +" 页"; } #region Web 窗体设计器生成的代码 override protected void OnInit(EventArgs e) { // // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。 // InitializeComponent(); base.OnInit(e); } /// /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// private void InitializeComponent() { this.Load += new System.EventHandler(this.Page_Load); } #endregion } } |
关键字词: