现在的位置: 首页 > 综合 > 正文

实现高效分页的方法

2013年02月11日 ⁄ 综合 ⁄ 共 1937字 ⁄ 字号 评论关闭
 1<script runat=server>
 2SqlConnection conNorthwind;
 3string  strSelect;
 4int intStartIndex;
 5int intEndIndex;
 6
 7void Page_Load(Object sender , EventArgs e) 
 8{
 9    SqlCommand cmdSelect;
10
11    conNorthwind = new SqlConnection( @"Server=localhost;Integrated Security=SSPI;Database=Northwind" );
12    
13    if (! IsPostBack ) 
14    {
15        // Get  Total Pages
16        strSelect = "Select Count(*) From Products";
17        cmdSelect = new SqlCommand( strSelect, conNorthwind );
18        conNorthwind.Open();
19        dgrdProducts.VirtualItemCount = ( (int)cmdSelect.ExecuteScalar() / dgrdProducts.PageSize );
20        conNorthwind.Close();
21        BindDataGrid();
22    }

23}

24
25void BindDataGrid () 
26{
27    SqlDataAdapter dadProducts;
28    DataSet dstProducts;
29
30    intEndIndex = intStartIndex + dgrdProducts.PageSize;
31    strSelect = "Select * From Products Where ProductID > @startIndex And ProductID <= @endIndex Order By ProductID";
32    dadProducts = new SqlDataAdapter( strSelect, conNorthwind );
33    dadProducts.SelectCommand.Parameters.Add( "@startIndex", intStartIndex );
34    dadProducts.SelectCommand.Parameters.Add( "@endIndex", intEndIndex );
35    dstProducts = new DataSet();
36    dadProducts.Fill( dstProducts );
37
38    dgrdProducts.DataSource = dstProducts;
39    dgrdProducts.DataBind();
40}

41
42void dgrdProducts_PageIndexChanged( object s, DataGridPageChangedEventArgs e ) {
43    intStartIndex = ( e.NewPageIndex * dgrdProducts.PageSize );
44    dgrdProducts.CurrentPageIndex = e.NewPageIndex;
45    BindDataGrid();
46}

47
48</Script>
49
50<html>
51<head><title>DataGridCustomPaging.aspx</title></head>
52<body>
53<form Runat="Server">
54
55<asp:DataGrid
56  ID="dgrdProducts"
57  AllowPaging="True"
58  AllowCustomPaging="True"
59  PageSize="3"
60  OnPageIndexChanged="dgrdProducts_PageIndexChanged"
61  PagerStyle-Mode="NumericPages"
62  CellPadding="3"
63  Runat="Server" />
64
65</form>
66</body>
67</html>
68

使用条件:要有一个主键列(ProductID)。

抱歉!评论已关闭.