1
<
script runat
=
server
>
2
SqlConnection conNorthwind;
3
string
strSelect;
4
int
intStartIndex;
5
int
intEndIndex;
6
7
void
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
25
void
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
42
void
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

2

3

4

5

6

7

8



9

10

11

12

13

14



15

16

17

18

19

20

21

22

23

24

25

26



27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42



43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

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