vb.net datagridview 怎么控制分页

zq123zz zq123zz 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在form窗体中我该怎么分页谢谢了。


Imports System.Windows.Forms
Public Class dvgfy
#Region "DataGridview分页操作说明"
'PageSize 属性 设置每页显示的数据条数
'CurrentPage 属性 返回当前页数
'Toltal_Page 属性 返回总页数
'ToNext 方法 显示下一页
'ToUp 方法 显示上一页
'ToFirst 方法 显示第一页
'ToLast 显示最后一页
'CountSize 获得记录总数
#End Region
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
Private CountSize As Integer '自己加的 为了获得总记录
Public ReadOnly Property Count_Size() As Integer '自己加的
Get
Return CountSize
End Get
End Property '自己加的
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 dvgfy_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))
CountSize = tol '自己加的 获取总记录数
If temptolpage * PageSize >= tol Then
ToltalPage = temptolpage
Else
ToltalPage = temptolpage + 1
End If
If CountSize <= 4 Then
'If CountSize <= PageSize Then '判断记录数是否小于每页需要显示的数量,如果是的话就将每页显示的数量改变为记录的数量
PageSize = CountSize
ToltalPage = 1
'End If
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(ByVal For_Focus)
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
For_Focus.Focus() '使 For_Focus 获得焦点
End If
End Sub
Public Sub ToUp(ByVal For_Focus)
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
For_Focus.Focus() '使 For_Focus 获得焦点
End If

End Sub
Public Sub ToFirst(ByVal For_Focus)
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
For_Focus.Focus() '使 For_Focus 获得焦点
End If
End Sub
Public Sub ToLast(ByVal For_Focus)
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
For_Focus.Focus() '使 For_Focus 获得焦点
End If
End Sub
Public Sub ToPage(ByVal For_Pages As Object, ByVal For_Focus As Object, ByVal PageNum As Integer)
If PageNum = NowPage Or Me.DataSource Is Nothing Then '当提交的页数=当前页数的话就不执行;无记录不执行。
Exit Sub
End If
If PageNum > ToltalPage Or PageNum < 1 Or PageNum = NowPage Then
MsgBox("最小页数为1" & (Chr(13)) & "最大页数为" & ToltalPage, , "提示")
NowPage = CurrentPage '获取当前页数
For_Pages.text = NowPage
For_Pages.SelectAll() '访问的页数出错之后将文本框的数字全选,方便操作
Exit Sub
Else
CType(Me.DataSource, DataTable).Rows.Clear()
For i As Integer = 0 To ds.Tables(PageNum - 1).Rows.Count - 1
CType(Me.DataSource, DataTable).ImportRow(ds.Tables(PageNum - 1).Rows(i))
Next
NowPage = PageNum '获取当前页数
For_Focus.Focus() '使 For_Focus 获得焦点
End If
End Sub
End Class
...全文

相关推荐

VB.NET 自定义有分页功能的Datagridview

此PageDatagridview继承Datagridview,并添加了分页的功能 从自定义工具箱中拖出PageDatagridview与Datagridview具有完全一样的功能并增加了分页功能。

lkhoji

VB.NET中DataGridView控件的高级使用与数据库交互实战

回顾一下,今天我们走过了怎样的旅程?👉 从最基本的属性设置👉 到复杂的双向绑定机制👉 再到高并发下的性能优化你会发现,并不是一个“傻瓜式”控件,它的每一个特性背后都有其设计哲学。而真正的高手,不只是会“怎么用”,更要懂“为什么这么设计”。🎯 记住一句话:优秀的程序员,不是写出最多代码的人,而是能让系统跑得最快、最稳、最容易维护的人。希望这篇文能帮你推开那扇门——通往更深层次的技术世界。🚪✨加油!你的下一个项目,一定会更出色!💪🔥。

Kiki-2189

VB.NET中DataGridView打印功能的实现与自定义

类提供了一系列事件,允许开发者自定义打印过程的不同方面。这些事件包括但不限于:BeginPrint:开始打印文档前触发。EndPrint:打印文档完成后触发。:在打印每一页之前触发,可以调整页面设置。PrintPage:打印每一页时触发。:打印作业进度更新时触发。下面我们将详细介绍PrintPage事件,因为它是在打印每一页时处理打印逻辑的核心部分。

初雪CH

vb.net DataGridView控件用法,.net DataGridView控件用法,GridView用法

vb.net DataGridView控件用法,.net DataGridView控件用法,GridView用法

kzccomputer

DataGridView分页控件标准版VB2008源代码及DataGridView178页详细使用说明

DataGridView分页控件标准版VB2008源代码及DataGridView178页详细使用说明

风斯火
评论 3
收藏 已收藏
分享
返回顶部
zq123zz
VB 16,718 成员 110,520 内容