Run screenshot:
Data Sheet Structure: Megaid Int IDENTITY (1, 1) Not Null Primary Key Clustered MegaGuid Char (36) Not Null Index
Data generating script:
Declare @i int set @i = 1 while @i <1000001 begin insert @i <1000001 begin insert inTo megatable (megaGuid) Values (newid ()) set @i = @i 1 End Go
C # code:
DateTime StartTime; Void Page_init (Object Sender, Eventargs E) {StartTime = DateTime.now;}
Protected Override Void Render (HTMLTextWriter Writer) {base.render (Writer); response.write ("This page execution time:" (DateTime.now - starttime));}
INT Records = 10000; int Pages = 10; int Pagesize = 15; sqlconnection conn = new SqlConnection ("Server = (local); data = megadata; user ID = sa; password = xxx");
Void Page_Load (Object Sender, Eventargs E) {if (! ispostback) {DGBIND (Getsqlstring (1));
int firstPage = int.Parse (hidFirstPage.Value); pnlButtons.Controls.Add (getPager (firstPage)); lblPrompt.Text = "data extraction range: SELECT TOP" records.ToString () "megaid FROM megatable Order by megaguid b> ";
String getsqlstring (int selectedPage) {string [] idsstray; string sqlstr;
IF (session ["idstr"]! = null) {IDSSTRARRAY = session ["idstr"]. Tostring (). split ('#');} else {sqlstr = "select top" records.tostring () " megaid FROM megatable ORDER BY megaguid "; SqlCommand cmd = new SqlCommand (sqlStr, conn); conn.Open (); SqlDataReader dr = cmd.ExecuteReader (); StringBuilder sb = new StringBuilder (" "); int n = 1;
While (DR.Read ()) {if (n% pagesize == 0) {sb.append (dr [0] .tostring () "#");} else {sb.append (dr [0] .tostring () ",");} N ;}
Dr.close (); conn.close (); sb.remove (sb.Length - 1, 1); idsstrarray = sb.toString (). split ('#'); session ["idstr"] = sb.toString ();} hidPageCount.Value = idsStrArray.Length.ToString (); sqlStr = "SELECT megaid, megaguid FROM megatable WHERE megaid IN (" idsStrArray [selectedPage - 1] ")"; sqlStr = "ORDER BY megaguid" ; return sqlStr;} Panel getPager (int firstPage) {int pageCount = int.Parse (hidPageCount.Value); Panel pnlPager = new Panel (); pnlPager.Controls.Add (new LiteralControl ( " , PageCount.ToString ())); return pnlPager;} LinkButton getLinkButton (string lbId, string lbText, string lbCmdName, string lbCmdArg) {LinkButton lb = new LinkButton (); lb.ID = lbCmdName lbId; lb.Text = lbText ; lb.CommandName = lbCmdName; lb.CommandArgument = lbCmdArg; lb.Command = new CommandEventHandler (pageTurn); return lb;} void pageTurn (object sender, CommandEventArgs e) {LinkButton lb = (LinkButton) sender; int selectedPage = int .Parse (lb.CommandArgument); int firstPage = selectedPage / pages * pages; firstPage = (selectedPage% pages == 0) (firstPage - pages):? firstPage; hidFirstPage.Value = firstPage.ToString (); dgBind (getSqlString ( selectedPage)); pnlButtons.Controls.RemoveAt (pnlButtons.Controls.Count - 1); pnlButtons.Controls.Add (getPager (firstPage)); lb = (LinkButton) pnlButtons.Controls [pnlButtons.Controls.Count - 1] .FindControl ("PGBTN" SELECTEDPAGE.TOSTRING ()); lb.enabled = false;} void DGBind (String Sqlstr) {SQLDataAdapter Da = NE W SqlDataAdapter (Sqlstr, Conn); DataTable DT = New DataTable (); conn.open (); da.fill (dt); conn.close (); Da.Dispose (); DG.DataSource = DT; DG.DATABIND (); void dg_ItemDataBound (object sender, DataGridItemEventArgs e) {dg.Controls [0] .EnableViewState = false;} ASPX Code: <% @ Import Namespace = "System.Text"%> <% @ Import Namespace = "System.Data.SqlClient "%> <% @ Import namespace =" system.data "%> <% @ page language =" c # "%>
co" pageCount. ToString () "Page")); PNLPager.Controls.Add (GetLinkButton ("FST", "Home", "PGBTN", "1")); PNLPager.Controls.Add (New LitralControl (")); IF (FirstPage> 0) {pnlpager.controls.add (GetLinkButton ("pre", "front" pages.tostring () "page", "pgbtn", (firstpage - pages 1) .tostring ())) PnlPager.Controls.add (New LiteralControl ("));} for (int i = firstpage 1; i