1using System; 
 2using System.Collections; 
 3using System.ComponentModel; 
 4using System.Data; 
 5using System.Drawing; 
 6using System.Web; 
 7using System.Web.SessionState; 
 8using System.Web.UI; 
 9using System.Web.UI.WebControls; 
10using System.Web.UI.HtmlControls; 
11using System.Data.SqlClient; 
12namespace changedpage 
13  
14 /// <summary> 
15 /// WebForm2 的摘要说明。 
16 /// </summary> 

17 public class WebForm2 : System.Web.UI.Page 
18 
19  protected System.Web.UI.WebControls.DataGrid dgCustomPage; 
20  int startIndex = 0
21  
22  private void Page_Load(object sender, System.EventArgs e) 
23  
24   // 在此处放置用户代码以初始化页面 
25   if(!IsPostBack) 
26   
27    binddata(); 
28   }
 
29  }
 
30  private void binddata() 
31  
32   SqlConnection myconnection = new SqlConnection("server = localhost;user id =sa;password =;database =Northwind");  
33   SqlDataAdapter mycommand = new SqlDataAdapter("select LastName,FirstName,BirthDate,City from Employees",myconnection); 
34   DataSet mydataset = new DataSet(); 
35   try 
36   {  
37    mycommand.Fill(mydataset,startIndex,dgCustomPage.PageSize,"CurDataTable"); 
38    mycommand.Fill(mydataset,"alldatatable"); 
39    dgCustomPage.VirtualItemCount = mydataset.Tables["alldatatable"].Rows.Count; 
40    dgCustomPage.DataSource=mydataset.Tables["CurDataTable"]; 
41    dgCustomPage.DataBind(); 
42   }
 
43   catch (Exception error) 
44   
45    Response.Write(error.ToString()); 
46   }
 
47  }
 
48
49  private void dgCustomPage_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e) 
50  
51   dgCustomPage.CurrentPageIndex=e.NewPageIndex; 
52   startIndex = dgCustomPage.PageSize * dgCustomPage.CurrentPageIndex; 
53   binddata(); 
54  }
 
55 }
 
56   }
  
57
58使用SqlDataAdapter  
59
60SqlDataAdapter是用来把来自数据库的数据填充到DataSet中,过载的Fill方法中的任一个都需  
61
62要两个整数索引值(如下列代码所示):  
63
64public int Fill( DataSet dataSet, int startRecord, int maxRecords, string srcTable );  
65
66StartRecord值标示从零开始的记录起始索引值。MaxRecord值表示从startRecord开始的记录数,并将拷贝到新的 DataSet中。  
67
68SqlDataAdapter在内部利用SqlDataReader执行查询并返回结果。SqlDataAdapter读取结果并创建基于来自 SalDataReader的数据的Dataset。SqlDataAdapter通过startRecord和maxRecords把所有结果都拷贝到新生成的 DataSet中,并丢弃不需要的数据。这意味着许多不必要的数据将潜在的通过网络进入数据访问客户--这是这种方 法的主要缺陷。  
69
70
71比如,如果有1000个记录,而需要的是第900到950个记录,那么前面的899个记录将仍然穿越网络然后被丢弃。对 于小数量的记录,这种开销可能是比较小的,但如果针对大量数据的分页,则这种开销就会非常巨大。