首先创建一个类库项目
在自动创建的class1的代码页里复制以下代码,然后生成dll 直接托放到工具栏里使用
源代码
Public Class PageDataGridview
Inherits System.Windows.Forms.DataGridView
Private ds As New DataSet
Private ToltalPage As Integer = 1
Private NowPage As Integer = 1
Private OnePageRow As Integer
Private nowrowno As Integer = 0
Public Property PageSize() As Integer
Get
Return OnePageRow
End Get
Set(ByVal value As Integer)
If value < 0 Then
Exit Property
End If
OnePageRow = value
End Set
End Property
Public ReadOnly Property CurrentPage() As Integer
Get
Return NowPage
End Get
End Property
Public ReadOnly Property Toltal_Page() As Integer
Get
Return ToltalPage
End Get
End Property
Private Sub PageDataGridview_DataSourceChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.DataSourceChanged
Dim Datagrid As DataGridView = CType(sender, DataGridView)
If CType(Datagrid.DataSource, DataTable).Rows.Count > 0 Then
ToltalPage = 1
NowPage = 1
If PageSize = 0 Then
Exit Sub
End If
Dim table As DataTable = CType(Datagrid.DataSource, DataTable)
Dim tol As Integer = table.Rows.Count
Dim temptolpage As Integer = CInt(Int(tol / PageSize))
If temptolpage * PageSize >= tol Then
ToltalPage = temptolpage
Else
ToltalPage = temptolpage + 1
End If
nowrowno = 0
ds.Tables.Clear()
For tbcount As Integer = 0 To ToltalPage - 1
Dim temptable As New DataTable
For i As Integer = 0 To CType(Datagrid.DataSource, DataTable).Columns.Count - 1
Dim col As New DataColumn
col.ColumnName = CType(Datagrid.DataSource, DataTable).Columns(i).ColumnName
temptable.Columns.Add(col)
Next
For s As Integer = 1 To PageSize
If nowrowno = CType(Datagrid.DataSource, DataTable).Rows.Count Then
Exit For
End If
temptable.ImportRow(CType(Datagrid.DataSource, DataTable).Rows(nowrowno))
nowrowno += 1
Next
ds.Tables.Add(temptable)
Next
If ds.Tables.Count > 0 Then
CType(Datagrid.DataSource, DataTable).Rows.Clear()
For n As Integer = 0 To PageSize - 1
CType(Datagrid.DataSource, DataTable).ImportRow(ds.Tables(0).Rows(n))
Next
End If
End If
End Sub
Public Sub ToNext()
If Me.DataSource Is Nothing Then
Exit Sub
End If
If NowPage = ToltalPage Then
MsgBox("已经到最后一页")
Else
CType(Me.DataSource, DataTable).Rows.Clear()
For i As Integer = 0 To ds.Tables(NowPage).Rows.Count - 1
CType(Me.DataSource, DataTable).ImportRow(ds.Tables(NowPage).Rows(i))
Next
NowPage += 1
End If
End Sub
Public Sub ToUp()
If Me.DataSource Is Nothing Then
Exit Sub
End If
If NowPage = 1 Then
MsgBox("已经到第一页")
Else
CType(Me.DataSource, DataTable).Rows.Clear()
For i As Integer = 0 To ds.Tables(NowPage - 2).Rows.Count - 1
CType(Me.DataSource, DataTable).ImportRow(ds.Tables(NowPage - 2).Rows(i))
Next
NowPage -= 1
End If
End Sub
Public Sub ToFirst()
If Me.DataSource Is Nothing Then
Exit Sub
End If
If NowPage = 1 Then
MsgBox("已经到第一页")
Else
CType(Me.DataSource, DataTable).Rows.Clear()
For i As Integer = 0 To ds.Tables(0).Rows.Count - 1
CType(Me.DataSource, DataTable).ImportRow(ds.Tables(0).Rows(i))
Next
NowPage = 1
End If
End Sub
Public Sub ToLast()
If Me.DataSource Is Nothing Then
Exit Sub
End If
If NowPage = ToltalPage Then
MsgBox("已经到最后一页")
Else
CType(Me.DataSource, DataTable).Rows.Clear()
For i As Integer = 0 To ds.Tables(ToltalPage - 1).Rows.Count - 1
CType(Me.DataSource, DataTable).ImportRow(ds.Tables(ToltalPage - 1).Rows(i))
Next
NowPage = ToltalPage
End If
End Sub
End Class
PageSize 属性 设置每页显示的数据条数
CurrentPage 属性 返回当前页数
Toltal_Page 属性 返回总页数
ToNext 方法 显示下一页
ToUp 方法 显示上一页
ToFirst 方法 显示第一页
ToLast 显示最后一页
strSQL = "SELECT sys.tables.name AS TableName FROM sys.Tables order by sys.tables.object_id"
Dim sqlCon As SqlClient.SqlConnection
Dim strCon As String = "data source=BB040C77BC0E417;initial catalog=TESTDATA;user id=sa;password=123456;"
sqlCon = New System.Data.SqlClient.SqlConnection(strCon)
sqlCon.Open()
Dim myDataAdapter As New SqlClient.SqlDataAdapter(strSQL, sqlCon)
Dim mydataset As New DataSet
myDataAdapter.Fill(mydataset)