[Transfer][VB]DataGrid分页机制,通过编程做一个十分有个性、功能十分完善的分页效果
我们来分析DataGrid控件的分页功能在以上两个实例中应用。通过分析代码我们知道:当客户端请求翻页时候,ASP.NET将执行由.NET框架委托的同名事件――PageIndexChanged事件,通过这个事件过程达到分页目的。分页机制主要体现在上段的DataGrid1.CurrentPageIndex = e.NewPageIndex语句中。在利用OleDbDataAdapter 对象读取数据后,往DataSet对象中填充数据的就是CurrentPageIndex和PageSize两个属性。OleDbDataAdapter从数据库中按照一定的记录排序方式读出数据后,把从第(CurrentPageIndex*PageSize)条记录开始到第(CurrentPageIndex*PageSize+PageSize)条记录填充到DataSet里,组成一个满页的记录,然后在绑定到DataGrid,然后通过DataGrid控件显示出来,就是请求的页面。本质上就是利用DataAdapter对象Fill方法的几个重载。但是这个过程对于使用这种分页方式的用户来说是透明的,因此我们无需编写任何代码,一切由.NET框架运行库完成。这样的好处是并不需要多少编程技巧,只需指指点点,分页效果就实现了。不好的地方就是缺少灵活性。当我们需要一个多样化,个性化的分页效果的时候,我们就要利用简单编程的方式来实现。
![](http://edu.iecool.com/uppic/pic/edupic/20051221101906_06.jpg)
下面这个实例中,我们将可以根据DataGrid分页机制,通过编程做一个十分有个性、功能十分完善的分页效果。
DataGrid_Sample3.aspx.vb的代码如下:
![](http://www.elinknet.com.cn/Forums/UploadFile/2007224458241066.jpg)
'----code begin----
![](http://edu.iecool.com/uppic/pic/edupic/20051221101906_06.jpg)
下面这个实例中,我们将可以根据DataGrid分页机制,通过编程做一个十分有个性、功能十分完善的分页效果。
在DataCon Web项目里新建一个Web 窗体,命名为DataGrid_Sample3.aspx,并添加一个DataGrid控件,四个LinkButton控件,一个DropDownList控件,一个Label1控件,一个TextBox控件,一个Button控件,一个正规则表达式验证控件。
DataGrid_Sample3.aspx的主要HTML代码如下:
1
<form id="Form1" method="post" runat="server">
2
<FONT face="宋体">
3
<asp:DataGrid
4
id="DataGrid1"
5
runat="server" Width="368px" Height="144px" AllowPaging="True" AllowCustomPaging="True"
6
PageSize="999">
7
<ItemStyle Font-Size="X-Small"></ItemStyle>
8
<HeaderStyle BackColor="SkyBlue"></HeaderStyle>
9
<PagerStyle Visible="False" PageButtonCount="5" Mode="NumericPages"></PagerStyle>
10
</asp:DataGrid><br>
11
<asp:LinkButton
12
id="LinkButton1" runat="server"
13
Font-Size="X-Small">第一页</asp:LinkButton>
14
<asp:LinkButton
15
id="LinkButton2" runat="server"
16
Font-Size="X-Small">上一页</asp:LinkButton>
17
<asp:LinkButton
18
id="LinkButton3" runat="server"
19
Font-Size="X-Small">下一页</asp:LinkButton>
20
<asp:LinkButton
21
id="LinkButton4" runat="server"
22
Font-Size="X-Small">最后页</asp:LinkButton>
23
<asp:Label
24
id="Label1" runat="server" Width="168px"
25
Font-Size="X-Small">Label</asp:Label>
26
<br>
27
每页记录条数
28
<asp:DropDownList
29
id="DropDownList1" runat="server"
30
Height="32px" Width="48px" AutoPostBack="True">
31
<asp:ListItem value="3">3</asp:ListItem>
32
<asp:ListItem value="5">5</asp:ListItem>
33
<asp:ListItem value="7" Selected="True">7</asp:ListItem>
34
<asp:ListItem value="9">9</asp:ListItem>
35
<asp:ListItem value="12">12</asp:ListItem>
36
<asp:ListItem value="15">15</asp:ListItem>
37
</asp:DropDownList>
38
跳转至
39
<asp:TextBox
40
id="TextBox1" runat="server" Width="48px"></asp:TextBox>
41
<asp:Button id="Button1" runat="server"
42
Width="40px" Text="->Go"></asp:Button>
43
<asp:RegularExpressionValidator
44
id="RegularExpressionValidator1" runat="server"
45
Font-Size="XX-Small" ErrorMessage="请输入正确的页码"
46
ValidationExpression="[1-9]{1}\d{0,}"
47
ControlToValidate="TextBox1" >
48
</asp:RegularExpressionValidator>
49
</FONT>
50
</form>
51![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
52
http://www.sucsky.com/info/8120.htm
53![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
39
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
40
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
41
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
42
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
43
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
44
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
45
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
46
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
47
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
48
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
49
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
50
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
51
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
52
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
53
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
DataGrid_Sample3.aspx.vb的代码如下:
![](http://www.elinknet.com.cn/Forums/UploadFile/2007224458241066.jpg)
'----code begin----
1
'引入名称空间
2
Imports System
3
Imports System.Data
4
Imports System.Web.UI
5
Public Class DataGrid_Sample3_aspx
6
Inherits System.Web.UI.Page
7
Web 窗体设计器生成的代码
10
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
11
'在此处放置初始化页的用户代码
12
If Not IsPostBack Then
13
viewstate("startpage") = 0
14
'利用viewstate("startpage")来保存DataGrid1当前页码索引
15
'初始化为0,即第一页
16
viewstate("PageSize") = 7
17
'viewstate("PageSize")来保存PageSize,初始化为7
18
End If
19
getdata() '条用分页过程
20
End Sub
21
'编写读取数据通用过程,利用该过程读出数据,根据指定数据进行分页,
22
'并绑定到DataGrid控件上
23
Sub getdata()
24
Dim connstr As String '声明数据库连接字符
25
Dim mycon As OleDb.OleDbConnection
26
'因为使用Aeecss数据库,所以声明OleDConnention对象
27
Dim mycmd As OleDb.OleDbDataAdapter
28
'声明DataAdapter对象
29
Dim mysql As String
30
'声明Command命令的 SQL字符串
31
Try
32
connstr = "provider=microsoft.jet.oledb.4.0;data source=" + Server.MapPath(".") + "\StudentInfor.mdb"
33
'为连接字符串赋值
34
mycon = New OleDb.OleDbConnection(connstr)
35
'实例化Connection对象
36
mysql = "Select id,name,sex,class,tel ,email from student"
37
'设置SQL语句,即查询数据库中所有内容
38
mycmd = New OleDb.OleDbDataAdapter(mysql, mycon)
39
Dim dt As Data.DataSet = New Data.DataSet
40
'声明DataSet对象,并实例话
41
mycmd.Fill(dt, viewstate("startpage") * viewstate("PageSize"), viewstate("PageSize"), "infor")
42
'填充数据,即在内存中生成DataSet模型数据库
43
'利用DataAdapter.Fill的重载功能, viewstate("startpage") * viewstate("PageSize")乘机结果是第几条记录
44
DataGrid1.DataSource = dt.Tables("infor")
45
'为DataGrid1控件指定数据源
46
DataGrid1.DataBind()
47
'执行绑定
48
Catch ex As Exception
49
Response.Write("程序出错,信息描述如下:<br>" & ex.Message)
50
Finally
51
mycon.Close()
52
End Try
53
getpages()
54
End Sub
55
'获取记录分页信息
56
Sub getpages()
57
Dim mycon As OleDb.OleDbConnection = New OleDb.OleDbConnection(" provider=microsoft.jet.oledb.4.0;data source=" & Server.MapPath(".") & "\StudentInfor.mdb")
58
mycon.Open()
59
Try
60
Dim mycmd As OleDb.OleDbCommand = New OleDb.OleDbCommand("select count(*) from student", mycon)
61
viewstate("pc") = mycmd.ExecuteScalar \ viewstate("PageSize") + 1
62
Label1.Text = "当前为第[" & (viewstate("startpage") + 1).ToString & "]页/共[" & (viewstate("pc")) & "]页"
63
Catch ex As Exception
64
Response.Write("程序出错,信息描述如下:<br>" & ex.Message)
65
Finally
66
mycon.Close()
67
End Try
68
End Sub
69
'跳转至第一页
70
Private Sub LinkButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton1.Click
71
If viewstate("startpage") <> 0 Then
72
'如果当前页面不是第一页则执行
73
viewstate("startpage") = 0
74
End If
75
getdata()
76
End Sub
77
'跳转至上一页 ,即页码减1
78
Private Sub LinkButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton2.Click
79
If viewstate("startpage") > 0 Then
80
'如果当前页码索引大于0则执行
81
viewstate("startpage") = viewstate("startpage") - 1
82
End If
83
getdata()
84
End Sub
85
'跳转至下一页 ,即页码加1
86
Private Sub LinkButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton3.Click
87
If viewstate("startpage") < viewstate("pc") - 1 Then
88
'如果当前页码索引小于(总页数-1)时 则执行
89
viewstate("startpage") = viewstate("startpage") + 1
90
End If
91
getdata()
92
End Sub
93
' 跳转至最后一页
94
Private Sub LinkButton4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton4.Click
95
If viewstate("startpage") <> viewstate("pc") - 1 Then
96
'如果当前页面不是最后一页则执行
97
viewstate("startpage") = viewstate("pc") - 1
98
End If
99
getdata()
100
End Sub
101
'跳转至选中页码
102
Private Sub DropDownList1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged
103
viewstate("PageSize") = DropDownList1.Selectedvalue
104
viewstate("startpage") = 0
105
getdata()
106
End Sub
107
'跳转至手工输入的代码页码
108
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
109
If Int(TextBox1.Text) <= viewstate("pc") Then
110
viewstate("startpage") = Int(TextBox1.Text) - 1
111
getdata()
112
End If
113
End Sub
114
End Class
115
'-----code end ----------
116![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
39
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
40
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
41
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
42
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
43
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
44
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
45
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
46
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
47
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
48
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
49
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
50
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
51
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
52
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
53
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
54
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
55
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
56
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
57
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
58
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
59
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
60
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
61
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
62
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
63
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
64
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
65
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
66
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
67
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
68
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
69
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
70
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
71
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
72
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
73
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
74
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
75
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
76
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
77
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
78
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
79
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
80
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
81
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
82
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
83
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
84
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
85
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
86
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
87
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
88
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
89
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
90
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
91
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
92
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
93
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
94
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
95
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
96
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
97
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
98
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
99
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
100
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
101
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
102
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
103
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
104
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
105
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
106
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
107
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
108
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
109
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
110
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
111
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
112
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
113
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
114
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
115
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
116
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)