Vb.net 可以在DataGridView中分页吗?
在VB.NET中是否可以在DataGridView中分页? 我已经成功地连接到数据库,并且能够将数据导入到DataGrid中,但问题是我拥有的表太大,有超过10 mil行。因此,在一个视图中显示all-in-one会减慢加载时间,或者如果我选择添加更多的数据列,那么应用程序将变成一个错误 例如,这一行可以工作Vb.net 可以在DataGridView中分页吗?,vb.net,datagridview,Vb.net,Datagridview,在VB.NET中是否可以在DataGridView中分页? 我已经成功地连接到数据库,并且能够将数据导入到DataGrid中,但问题是我拥有的表太大,有超过10 mil行。因此,在一个视图中显示all-in-one会减慢加载时间,或者如果我选择添加更多的数据列,那么应用程序将变成一个错误 例如,这一行可以工作 cmd.CommandText=“选择primaryTitle、startYear、runtimeMinutes、流派、FROM Basics” 但是这一行会给我抛出一个名为System.
cmd.CommandText=“选择primaryTitle、startYear、runtimeMinutes、流派、FROM Basics”
但是这一行会给我抛出一个名为System.OutOfMemoryException的错误
cmd.CommandText=“选择primaryTitle、startYear、runtimeMinutes、流派、导演、基础编剧、剧组”
任何帮助都将不胜感激
这是我当前的代码。我所做的唯一一件事就是将数据导入DataGridView,因为我不能再继续了
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim con As New SqlClient.SqlConnection
con.ConnectionString = "Data Source=DESKTOP-7SOUE1N\SQLEXPRESS;Initial Catalog=IMDb MOVIE DATABASE SYSTEM;Integrated Security=True"
con.Open()
Dim cmd As New SqlClient.SqlCommand
cmd.Connection = con
cmd.CommandText = "SELECT primaryTitle, startYear, runtimeMinutes, genres, directors, writers FROM Basics, Crew"
Dim rdr As SqlClient.SqlDataReader = cmd.ExecuteReader
Dim dt As New DataTable
dt.Load(rdr)
rdr.Close()
DataGridView1.DataSource = dt
con.Close()
End Sub
End Class
是的,当然是。我通常就是这样做的 先决条件:
DataGridView 1DataGridView
ToolStrip1ToolStrip
页码文本框
页面计数标签
btnPageBack按钮
btnPageNext按钮
显示的总数标签
OutOfTotalRecordsLabel
- (一些标签如“页码”、“起始”、“显示总数”、“超出”、“记录”)
- Dim RowsPerPage as Int16=40'集
ToolStrip
bellowDataGridView
footer的外观:
获取或更新列表SQL(包装在LoadListOfRecords()
sub中):
您可以先跳过订单
。但请注意,偏移xx行
,它告诉它应该从数据库中的何处开始读取记录(从开始偏移多少记录)和仅获取下一个xx行
,它告诉它要读取多少行并加载到“页面”。我跳过了创建数据集
、读取数据表
、将其分配给DataGridView
的数据源
等内容
按钮后退(我不会放在下一步,它几乎相同,只是改变了限制条件和迭代):
手动输入页码(转到特定页面),如下Enter
键行程:
Private Sub PageNo_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles PageNo.KeyDown
Call LoadListOfRecords()
End Sub
就这样。简单,易于用户使用,作品魅力十足,久经考验。没有第三方控件和库的混乱。是否将其导入datatable以管理它作为一个选项,或者您需要在SQL级别执行此操作?将其导入datagridview不是一个选项,问题是启动时需要我在表和列视图中列出所有内容。您可能需要查看
SELECT primaryTitle,startYear,运行时分钟数,基本类型按primaryTitle ASC偏移量排序((IIf(Me.PageNo.Text=”“,1,CInt(Me.PageNo.Text))-1)*50)仅获取下50行“
这是错的吗?我的代码似乎无法工作是的,您的SQL代码中有一个小错误,请注意,括号中的代码旁边缺少行。所以这就像偏移500行只取下50行一样。在诸如SSMS之类的工具中对SQL代码进行故障排除,然后在VB.NET代码中使用它,这很好。
Private Sub btnPageBack_Click(sender As System.Object, e As System.EventArgs) Handles btnPageBack.Click
If CInt(Me.PageNo.Text) > 1 Then
Me.PageNo.Text = CInt(Me.PageNo.Text) - 1
End If
Call LoadListOfRecords()
End Sub
Private Sub PageNo_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles PageNo.KeyDown
Call LoadListOfRecords()
End Sub