分页显示记录的主要思想就是先将所有的数据存到dataTable中,提供思想,灵活编写灵活调用
示例,分页显示类
Public Class clsPage
'每页记录数
Private _RowsPerPage As Integer = 20
'总页数
Private _TotalPage As Integer = 1
'当前页数
Private _curPage As Integer = 1
'要分页的DataGridView
Private _DataGridView As Windows.Forms.DataGridView
'保存的datatable
Private _DataTable As System.Data.DataTable
'获取与设置每页记录数
Public Property RowsPerPage() As Integer
Get
Return _RowsPerPage
End Get
Set(ByVal value As Integer)
_RowsPerPage = value
End Set
End Property
'获取总页数
Public Property TotalPage() As Integer
Get
Return _TotalPage
End Get
Set(ByVal value As Integer)
_TotalPage = value
End Set
End Property
'获取与设置当前页数
Public Property curPage() As Integer
Get
Return _curPage
End Get
Set(ByVal value As Integer)
_curPage = value
End Set
End Property
'设置需要分页的GetDataGridView
Public WriteOnly Property SetDataGridView()
Set(ByVal value As Object)
_DataGridView = value
End Set
End Property
'获取需要读的表格
Public WriteOnly Property SetDataTable()
Set(ByVal value As Object)
_DataTable = value
End Set
End Property
Public Sub New()
_DataGridView = New DataGridView
End Sub
'刷新分页
Public Sub RefreshPage()
If _curPage <= _TotalPage Then
ShowDataview()
Else
MsgBox("错误")
End If
End Sub
'到第一页
Public Sub GoFirstPage()
_curPage = 1
If _TotalPage >= 1 Then '只有一页
ShowDataview()
Else
MsgBox("错误")
End If
End Sub
'下一页
Public Sub GoNextPage()
If (_curPage + 1) <= _TotalPage Then
_curPage = _curPage + 1
ShowDataview()
End If
End Sub
'上一页
Public Sub GoPrevPage()
If _curPage > 1 Then _curPage = _curPage - 1
If _curPage <= _TotalPage Then
ShowDataview()
End If
End Sub
'到最后一页
Public Sub GoLastPage()
_curPage = _TotalPage
If _TotalPage >= 1 Then '只有一页
ShowDataview()
End If
End Sub
'dataview显示
Public Sub ShowDataview()
Dim daRow As DataRow
_DataGridView.Rows.Clear()
If _curPage * _RowsPerPage <= _DataTable.Rows.Count Then
For i = (_curPage - 1) * _RowsPerPage To _curPage * _RowsPerPage - 1
daRow = _DataTable.Rows(i)
addDataview(daRow)
Next
Else
For i = (_curPage - 1) * RowsPerPage To _DataTable.Rows.Count - 1
daRow = _DataTable.Rows(i)
addDataview(daRow)
Next
End If
End Sub
End Class
调用
Dim dgvPage As New clsPage
Private pageDataTable As New DataTable
dgvPage.GoFirstPage()‘跳转第一页
dgvPage.GoLastPage()'跳转最后一页
dgvPage.GoPrevPage()'跳转上一页
dgvPage.GoNextPage()'跳转写一页
'增加记录时候要加入到pageDataTable ,再根据每页显示的数量显示到dataview(显示控件)中