把它定义在用户控件中的。在。ASCX中写的。
在CSDN上看了很多的DATAGRID分页问题,当然DATAGRID有自己的分页项,功能是很有限的,我也在CSDN上看了很多自己分页的代码,发现都是用C#写的,我写了一个用ASP。NET中VB语言写的。以下代码供大家参考。
HTML代码:
1@ Control Language="vb" AutoEventWireup="false" Codebehind="DataGridPage.ascx.vb" Inherits="datagridfenye.DataGridPage" TargetSchema=" http://schemas.microsoft.com/intellisense/ie5 "
1<link href="../css/style.css" rel="stylesheet" type="text/css"/>
1<font face="MS UI Gothic"></font>
1<asp:panel cssclass="font2" forecolor="Blue" horizontalalign="Left" id="divPanel" runat="server" visible="True" width="84.16%">
2<asp:button backcolor="#E0E0E0" borderstyle="Ridge" borderwidth="1px" causesvalidation="False" commandname="FIRST" font-size="XX-Small" id="btnNavFirst" runat="server" text="初頁"></asp:button>
3<asp:button backcolor="#E0E0E0" borderstyle="Ridge" borderwidth="1px" causesvalidation="False" commandname="PREVIOUS" font-size="XX-Small" id="btnNavPrevious" runat="server" text="前頁"></asp:button>
4<asp:button backcolor="#E0E0E0" borderstyle="Ridge" borderwidth="1px" causesvalidation="False" commandname="NEXT" font-size="XX-Small" id="btnNavNext" runat="server" text="次頁"></asp:button>
5<asp:button backcolor="#E0E0E0" borderstyle="Ridge" borderwidth="1px" causesvalidation="False" commandname="LAST" font-size="XX-Small" id="btnNavLast" runat="server" text="末頁"></asp:button><input id="hdRowCount" name="Hidden1" runat="server" size="1" style="WIDTH: 43px; HEIGHT: 22px" type="hidden"/> <input id="hdCurrentIndex" name="Hidden1" runat="server" size="2" style="WIDTH: 48px; HEIGHT: 22px" type="hidden" value="0"/>
6<asp:label forecolor="Blue" id="LabelMsg" runat="server" width="232px"></asp:label>GOTO
7<asp:textbox id="tbPage" runat="server" width="31px"></asp:textbox>
8<asp:label forecolor="Blue" id="LabelMsg2" runat="server">頁</asp:label>
9<asp:button backcolor="#E0E0E0" borderstyle="Ridge" borderwidth="1px" causesvalidation="False" commandname="GO" font-size="XX-Small" id="btnNavGo" runat="server" text="確定"></asp:button></asp:panel>
1@ Control Language="vb" AutoEventWireup="false" Codebehind="DataGridPage.ascx.vb" Inherits="datagridfenye.DataGridPage" TargetSchema="http://schemas.microsoft.com/intellisense/ie5"
WEB代码:
Imports System
Imports System.Data
Imports System.Drawing
Imports System.Text
Imports System.Web
Imports System.Web.UI.WebControls
Imports System.Web.UI.HtmlControls
Public Delegate Sub BindDataDelegate()
Public Class DataGridPage
Inherits System.Web.UI.UserControl
#Region " Web フォーム デザイナで生成されたコード "
'この呼び出しは Web フォーム デザイナで必要です。
1<system.diagnostics.debuggerstepthrough()> Private Sub InitializeComponent()
2
3End Sub
4
5Public binddata1 As BindDataDelegate
6Private _dg As DataGrid
7Private _autohidden As Boolean = True
8Private _pagesize As Integer = 10
9Private _itemcount As Integer = 0
10Private _dispStyle As Integer = 1
11Protected WithEvents LabelMsg As System.Web.UI.WebControls.Label
12Protected WithEvents btnNavFirst As System.Web.UI.WebControls.Button
13Protected WithEvents btnNavPrevious As System.Web.UI.WebControls.Button
14Protected WithEvents btnNavNext As System.Web.UI.WebControls.Button
15Protected WithEvents btnNavLast As System.Web.UI.WebControls.Button
16Protected WithEvents tbPage As System.Web.UI.WebControls.TextBox
17Protected WithEvents LabelMsg2 As System.Web.UI.WebControls.Label
18Protected WithEvents btnNavGo As System.Web.UI.WebControls.Button
19Protected WithEvents divPanel As System.Web.UI.WebControls.Panel
20Protected WithEvents hdRowCount As System.Web.UI.HtmlControls.HtmlInputHidden
21Protected WithEvents hdCurrentIndex As System.Web.UI.HtmlControls.HtmlInputHidden
22
23'メモ : 次のプレースホルダ宣言は Web フォーム デザイナで必要です。
24'削除および移動しないでください。
25Private designerPlaceholderDeclaration As System.Object
26
27Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
28' CODEGEN: このメソッド呼び出しは Web フォーム デザイナで必要です。
29' コード エディタを使って変更しないでください。
30InitializeComponent()
31AddHandler Me.Load, AddressOf Page_Load
32
33End Sub
34
35#End Region
36
37Public Property Target() As DataGrid
38
39Get
40Return _dg
41End Get
42Set(ByVal Value As DataGrid)
43_dg = Value
44End Set
45End Property
46Public Property AutoHidden() As Boolean
47
48Get
49Return _autohidden
50End Get
51Set(ByVal Value As Boolean)
52_autohidden = Value
53End Set
54End Property
55
56Public Property PageSize() As Integer
57
58Get
59Return _pagesize
60End Get
61Set(ByVal Value As Integer)
62_pagesize = Value
63End Set
64End Property
65Public Property ItemCount() As Integer
66
67Get
68Return _itemcount
69End Get
70Set(ByVal Value As Integer)
71_itemcount = Value
72End Set
73End Property
74
75Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
76' ページを初期化するユーザー コードをここに挿入します。
77
78End Sub
79Public Sub SetTarget(ByVal adg As DataGrid, ByRef aBindData1 As BindDataDelegate)
80
81_dg = adg
82
83binddata1 = aBindData1
84
85AddHandler btnNavFirst.Click, AddressOf NavigationButtonClick
86AddHandler btnNavPrevious.Click, AddressOf NavigationButtonClick
87AddHandler btnNavNext.Click, AddressOf NavigationButtonClick
88AddHandler btnNavLast.Click, AddressOf NavigationButtonClick
89AddHandler btnNavGo.Click, AddressOf NavigationButtonClick
90AddHandler _dg.DataBinding, AddressOf zxDataBinding
91binddata1()
92End Sub
93Public Sub SetStyle(ByVal aPageSize As Integer, ByVal aAutoHidden As Boolean, ByVal aDispStyle As Integer)
94
95_pagesize = aPageSize
96_autohidden = aAutoHidden
97_dispStyle = aDispStyle
98
99divPanel.Visible = Not aAutoHidden
100End Sub
101Public Sub SetStyle(ByVal aPageSize As Integer, ByVal aAutoHidden As Boolean)
102SetStyle(aPageSize, aAutoHidden, 1)
103End Sub
104Public Sub SetStyle(ByVal aPageSize As Integer)
105SetStyle(aPageSize, True)
106End Sub
107Public Sub NavigationButtonClick(ByVal sender As Object, ByVal e As System.EventArgs)
108Dim direction As String
109direction = sender.CommandName
110
111Select Case (direction.ToUpper())
112
113Case ("FIRST")
114_dg.CurrentPageIndex = 0
115
116Case ("PREVIOUS")
117_dg.CurrentPageIndex = Math.Max(_dg.CurrentPageIndex - 1, 0)
118
119Case ("NEXT")
120_dg.CurrentPageIndex = Math.Min(_dg.CurrentPageIndex + 1, _dg.PageCount - 1)
121
122Case ("LAST")
123_dg.CurrentPageIndex = Math.Max(_dg.PageCount - 1, 0)
124
125Case ("GO")
126Try
127_dg.CurrentPageIndex = Math.Min(_dg.PageCount - 1, CInt(tbPage.Text) - 1)
128tbPage.Text = ""
129Catch
130tbPage.Text = ""
131End Try
132
133End Select
134
135binddata1()
136
137End Sub
138Public Sub zxDataBinding(ByVal sender As Object, ByVal e As System.EventArgs)
139
140Dim newCount As Integer = 0
141Dim PageCount As Integer = 0
142
143If (_dg.DataSource Is "null") Then
144
145SetButtonState(0)
146Exit Sub
147End If
148If (_dg.DataSource.GetType().ToString().ToLower() = "system.data.datatable") Then
149
150newCount = _dg.DataSource.Rows.Count
151
152ElseIf (_dg.DataSource.GetType().ToString().ToLower() = "system.data.dataview") Then
153
154newCount = _dg.DataSource.Count
155
156ElseIf (_dg.DataSource.GetType().ToString().ToLower() = "system.data.dataset") Then
157
158newCount = _dg.DataSource.Tables(0).Rows.Count
159End If
160
161If (newCount > 0) Then
162PageCount = CInt((newCount - 1) / _pagesize)
163If (_dg.CurrentPageIndex > PageCount - 1) Then
164_dg.CurrentPageIndex = PageCount - 1
165End If
166Else
167
168PageCount = 0
169_dg.CurrentPageIndex = 0
170
171End If
172
173Select Case (_dispStyle)
174
175Case 1
176LabelMsg.Text = "共" + PageCount.ToString() + "頁 第" + (_dg.CurrentPageIndex + 1).ToString() + "頁"
177LabelMsg.Text += " 總記?數:" + newCount.ToString() + ""
178
179Case 2
180LabelMsg.Text = (_dg.CurrentPageIndex + 1).ToString() + "/" + PageCount.ToString() + "頁"
181LabelMsg.Text += " 總數:" + newCount.ToString()
182
183End Select
184
185If (_autohidden) Then
186
187divPanel.Visible = ((newCount - 1) / _pagesize > 0)
188
189Else
190
191divPanel.Visible = True
192
193End If
194
195SetButtonState(PageCount)
196End Sub
197Public Sub SetButtonState(ByVal _PageCount As Integer)
198
199btnNavFirst.Enabled = (_dg.CurrentPageIndex > 0)
200btnNavPrevious.Enabled = (_dg.CurrentPageIndex > 0)
201btnNavNext.Enabled = (_dg.CurrentPageIndex < _PageCount - 1)
202btnNavLast.Enabled = (_dg.CurrentPageIndex < _PageCount - 1)
203End Sub
204
205
206End Class</system.diagnostics.debuggerstepthrough()>