繁体中文
设为首页
加入收藏
当前位置:.Net技术首页 >> 组件控件开发 >> datagrid分页问题(前后跳页)《控件版》

datagrid分页问题(前后跳页)《控件版》

2004-10-01 08:26:10  作者:  来源:互联网  浏览次数:11  文字大小:【】【】【
简介:把它定义在用户控件中的。在。ASCX中写的。 在CSDN上看了很多的DATAGRID分页问题,当然DATAGRID有自己的分页项,功能是很有限的,我也在CSDN上看了很多自己分页的代码,发现都是用C#写的,我写了一个用ASP。NET...

把它定义在用户控件中的。在。ASCX中写的。

在CSDN上看了很多的DATAGRID分页问题,当然DATAGRID有自己的分页项,功能是很有限的,我也在CSDN上看了很多自己分页的代码,发现都是用C#写的,我写了一个用ASP。NET中VB语言写的。以下代码供大家参考。

HTML代码:

<%@ Control Language="vb" AutoEventWireup="false" Codebehind="DataGridPage.ascx.vb" Inherits="datagridfenye.DataGridPage" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>

runat="server" Visible="True">

BorderWidth="1px" CausesValidation="False" BackColor="#E0E0E0" Font-Size="XX-Small">

BorderWidth="1px" CausesValidation="False" BackColor="#E0E0E0" Font-Size="XX-Small">

BorderWidth="1px" CausesValidation="False" BackColor="#E0E0E0" Font-Size="XX-Small">

BorderWidth="1px" CausesValidation="False" BackColor="#E0E0E0" Font-Size="XX-Small">

runat="server">

name="Hidden1" runat="server">

GOTO

CausesValidation="False" BackColor="#E0E0E0" Font-Size="XX-Small">

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 フォーム デザイナで必要です。

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.Object

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init

' CODEGEN: このメソッド呼び出しは Web フォーム デザイナで必要です。

' コード エディタを使って変更しないでください。

InitializeComponent()

AddHandler Me.Load, AddressOf Page_Load

End 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 Boolean

Get

Return _autohidden

End Get

Set(ByVal Value As Boolean)

_autohidden = Value

End Set

End Property

Public Property PageSize() As Integer

Get

Return _pagesize

End Get

Set(ByVal Value As Integer)

_pagesize = Value

End Set

End Property

Public Property ItemCount() As Integer

Get

Return _itemcount

End Get

Set(ByVal Value As Integer)

_itemcount = Value

End Set

End Property

Private 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 = aDispStyle

divPanel.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.CommandName

Select Case (direction.ToUpper())

Case ("FIRST")

_dg.CurrentPageIndex = 0

Case ("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 Try

End 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 = 0

If (_dg.DataSource Is "null") Then

SetButtonState(0)

Exit Sub

End If

If (_dg.DataSource.GetType().ToString().ToLower() = "system.data.datatable") Then

newCount = _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 If

If (newCount > 0) Then

PageCount = CInt((newCount - 1) / _pagesize)

If (_dg.CurrentPageIndex > PageCount - 1) Then

_dg.CurrentPageIndex = PageCount - 1

End If

Else

PageCount = 0

_dg.CurrentPageIndex = 0

End 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

责任编辑:admin
相关文章