本文共 7645 字,大约阅读时间需要 25 分钟。
在ASCX中写的。在CSDN上看了很多的DATAGRID分页问题,当然DATAGRID有自己的分页项,功能是很有限的,我也在CSDN上看了很多自己分页的代码,发现都是用C#写的,我写了一个用ASP。NET中VB语言写的。以下代码供大家参考。
HTML代码:
<%@ Control Language="vb" AutoEventWireup="false" Codebehind="DataGridPage.ascx.vb" Inherits="datagridfenye.DataGridPage" TargetSchema="" %>
<LINK href="../css/style.css" type="text/css" rel="stylesheet"><FONT face="MS UI Gothic"></FONT><asp:panel id="divPanel" ForeColor="Blue" CssClass="font2" HorizontalAlign="Left" Width="84.16%" runat="server" Visible="True"><asp:Button id="btnNavFirst" runat="server" BorderStyle="Ridge" Text="初頁" CommandName="FIRST" BorderWidth="1px" CausesValidation="False" BackColor="#E0E0E0" Font-Size="XX-Small"></asp:Button><asp:Button id="btnNavPrevious" runat="server" BorderStyle="Ridge" Text="前頁" CommandName="PREVIOUS" BorderWidth="1px" CausesValidation="False" BackColor="#E0E0E0" Font-Size="XX-Small"></asp:Button><asp:Button id="btnNavNext" runat="server" BorderStyle="Ridge" Text="次頁" CommandName="NEXT" BorderWidth="1px" CausesValidation="False" BackColor="#E0E0E0" Font-Size="XX-Small"></asp:Button><asp:Button id="btnNavLast" runat="server" BorderStyle="Ridge" Text="末頁" CommandName="LAST" BorderWidth="1px" CausesValidation="False" BackColor="#E0E0E0" Font-Size="XX-Small"></asp:Button><INPUT id="hdRowCount" style="WIDTH: 43px; HEIGHT: 22px" type="hidden" size="1" name="Hidden1" runat="server"> <INPUT id="hdCurrentIndex" style="WIDTH: 48px; HEIGHT: 22px" type="hidden" size="2" value="0" name="Hidden1" runat="server"> <asp:Label id="LabelMsg" ForeColor="Blue" Width="232px" runat="server"></asp:Label>GOTO <asp:TextBox id="tbPage" Width="31px" runat="server"></asp:TextBox><asp:Label id="LabelMsg2" ForeColor="Blue" runat="server">頁</asp:Label><asp:Button id="btnNavGo" runat="server" BorderStyle="Ridge" Text="確定" CommandName="GO" BorderWidth="1px" CausesValidation="False" BackColor="#E0E0E0" Font-Size="XX-Small"></asp:Button></asp:panel><%@ Control Language="vb" AutoEventWireup="false" Codebehind="DataGridPage.ascx.vb" Inherits="datagridfenye.DataGridPage" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>WEB代码:
Imports System
Imports System.DataImports System.DrawingImports System.TextImports System.WebImports System.Web.UI.WebControlsImports System.Web.UI.HtmlControlsPublic Delegate Sub BindDataDelegate()Public Class DataGridPageInherits System.Web.UI.UserControl
#Region " Web フォーム デザイナで生成されたコード "
'この呼び出しは Web フォーム デザイナで必要です。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()End Sub
Public binddata1 As BindDataDelegate
Private _dg As DataGrid Private _autohidden As Boolean = True Private _pagesize As Integer = 10 Private _itemcount As Integer = 0 Private _dispStyle As Integer = 1 Protected WithEvents LabelMsg As System.Web.UI.WebControls.Label Protected WithEvents btnNavFirst As System.Web.UI.WebControls.Button Protected WithEvents btnNavPrevious As System.Web.UI.WebControls.Button Protected WithEvents btnNavNext As System.Web.UI.WebControls.Button Protected WithEvents btnNavLast As System.Web.UI.WebControls.Button Protected WithEvents tbPage As System.Web.UI.WebControls.TextBox Protected WithEvents LabelMsg2 As System.Web.UI.WebControls.Label Protected WithEvents btnNavGo As System.Web.UI.WebControls.Button Protected WithEvents divPanel As System.Web.UI.WebControls.Panel Protected WithEvents hdRowCount As System.Web.UI.HtmlControls.HtmlInputHidden Protected WithEvents hdCurrentIndex As System.Web.UI.HtmlControls.HtmlInputHidden'メモ : 次のプレースホルダ宣言は Web フォーム デザイナで必要です。
'削除および移動しないでください。 Private designerPlaceholderDeclaration As System.ObjectPrivate Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
' CODEGEN: このメソッド呼び出しは Web フォーム デザイナで必要です。 ' コード エディタを使って変更しないでください。 InitializeComponent() AddHandler Me.Load, AddressOf Page_LoadEnd Sub
#End Region
Public Property Target() As DataGrid
Get
Return _dg End Get Set(ByVal Value As DataGrid) _dg = Value End Set End Property Public Property AutoHidden() As BooleanGet
Return _autohidden End Get Set(ByVal Value As Boolean) _autohidden = Value End Set End PropertyPublic Property PageSize() As Integer
Get
Return _pagesize End Get Set(ByVal Value As Integer) _pagesize = Value End Set End Property Public Property ItemCount() As IntegerGet
Return _itemcount End Get Set(ByVal Value As Integer) _itemcount = Value End Set End PropertyPrivate Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' ページを初期化するユーザー コードをここに挿入します。End Sub
Public Sub SetTarget(ByVal adg As DataGrid, ByRef aBindData1 As BindDataDelegate)_dg = adg
binddata1 = aBindData1
AddHandler btnNavFirst.Click, AddressOf NavigationButtonClick
AddHandler btnNavPrevious.Click, AddressOf NavigationButtonClick AddHandler btnNavNext.Click, AddressOf NavigationButtonClick AddHandler btnNavLast.Click, AddressOf NavigationButtonClick AddHandler btnNavGo.Click, AddressOf NavigationButtonClick AddHandler _dg.DataBinding, AddressOf zxDataBinding binddata1() End Sub Public Sub SetStyle(ByVal aPageSize As Integer, ByVal aAutoHidden As Boolean, ByVal aDispStyle As Integer)_pagesize = aPageSize
_autohidden = aAutoHidden _dispStyle = aDispStyledivPanel.Visible = Not aAutoHidden
End Sub Public Sub SetStyle(ByVal aPageSize As Integer, ByVal aAutoHidden As Boolean) SetStyle(aPageSize, aAutoHidden, 1) End Sub Public Sub SetStyle(ByVal aPageSize As Integer) SetStyle(aPageSize, True) End Sub Public Sub NavigationButtonClick(ByVal sender As Object, ByVal e As System.EventArgs) Dim direction As String direction = sender.CommandNameSelect Case (direction.ToUpper())
Case ("FIRST")
_dg.CurrentPageIndex = 0Case ("PREVIOUS")
_dg.CurrentPageIndex = Math.Max(_dg.CurrentPageIndex - 1, 0)Case ("NEXT")
_dg.CurrentPageIndex = Math.Min(_dg.CurrentPageIndex + 1, _dg.PageCount - 1)Case ("LAST")
_dg.CurrentPageIndex = Math.Max(_dg.PageCount - 1, 0)Case ("GO")
Try _dg.CurrentPageIndex = Math.Min(_dg.PageCount - 1, CInt(tbPage.Text) - 1) tbPage.Text = "" Catch tbPage.Text = "" End TryEnd Select
binddata1()
End Sub
Public Sub zxDataBinding(ByVal sender As Object, ByVal e As System.EventArgs)Dim newCount As Integer = 0
Dim PageCount As Integer = 0If (_dg.DataSource Is "null") Then
SetButtonState(0)
Exit Sub End If If (_dg.DataSource.GetType().ToString().ToLower() = "system.data.datatable") ThennewCount = _dg.DataSource.Rows.Count
ElseIf (_dg.DataSource.GetType().ToString().ToLower() = "system.data.dataview") Then
newCount = _dg.DataSource.Count
ElseIf (_dg.DataSource.GetType().ToString().ToLower() = "system.data.dataset") Then
newCount = _dg.DataSource.Tables(0).Rows.Count
End IfIf (newCount > 0) Then
PageCount = CInt((newCount - 1) / _pagesize) If (_dg.CurrentPageIndex > PageCount - 1) Then _dg.CurrentPageIndex = PageCount - 1 End If ElsePageCount = 0
_dg.CurrentPageIndex = 0End If
Select Case (_dispStyle)
Case 1
LabelMsg.Text = "共" + PageCount.ToString() + "頁 第" + (_dg.CurrentPageIndex + 1).ToString() + "頁" LabelMsg.Text += " 總記?數:" + newCount.ToString() + ""Case 2
LabelMsg.Text = (_dg.CurrentPageIndex + 1).ToString() + "/" + PageCount.ToString() + "頁" LabelMsg.Text += " 總數:" + newCount.ToString()End Select
If (_autohidden) Then
divPanel.Visible = ((newCount - 1) / _pagesize > 0)
Else
divPanel.Visible = True
End If
SetButtonState(PageCount)
End Sub Public Sub SetButtonState(ByVal _PageCount As Integer)btnNavFirst.Enabled = (_dg.CurrentPageIndex > 0)
btnNavPrevious.Enabled = (_dg.CurrentPageIndex > 0) btnNavNext.Enabled = (_dg.CurrentPageIndex < _PageCount - 1) btnNavLast.Enabled = (_dg.CurrentPageIndex < _PageCount - 1) End Sub End Class转载地址:https://linuxstyle.blog.csdn.net/article/details/226215 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!