vb.net - 刷新 DataGridView vb.net
问题描述
我有不刷新的 DataGridView。我希望能够通过单击“刷新”按钮来刷新它。
我的数据库称为“ProjectDatabase”,我要使用的表称为“SWOT”。
我尝试了几种方法,但都没有奏效,如果它确实有效,那么我会遇到新问题,例如每次单击刷新时都会重复数据。我使用的是 MS Acess 数据库。
我尝试了以下编码,它会刷新,但每次单击刷新时都会重复数据 x2:
Private Sub btnRefresh_Click(sender As Object, e As EventArgs) Handles btnRefresh.Click
Refreshdata()
End Sub
Dim myConnection As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\ahmed\OneDrive\Desktop\ProjectDatabase2003.mdb")
Dim DS As DataSet = New DataSet
Dim DA As OleDbDataAdapter
Dim tables As DataTableCollection = DS.Tables
Dim source1 As New BindingSource()
Private Sub Refreshdata()
DA = New OleDbDataAdapter("Select * from SWOT", myConnection)
DA.Fill(DS, "SWOT_Report")
Dim view1 As New DataView(tables(0))
source1.DataSource = view1
DataGridView1.DataSource = view1
DataGridView1.Refresh()
End Sub
解决方案
我认为您使用BindingSource
、DataSet
、DataAdapter
和DataTable
成员(类范围)变量使代码过于复杂。
对于成员变量,将它们剥离为以下两个:
Dim ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\ahmed\OneDrive\Desktop\ProjectDatabase2003.mdb"
Dim swotBindingSource As BindingSource
请注意,该对象已被删除并myConnection
替换为连接字符串变量
在 FormsNew()
方法中添加:
swotBindingSource = New BindingSource()
DataGridView1.DataSource = swotBindingSource
这将设置您DataGridView
将其swotBindingSource
作为其数据源。稍后在过滤数据时可以使用 BindingSource。
并且,最后将RefreshData
sub 更改为:
Private Sub Refreshdata()
Dim swotDataTable As New DataTable
Using conn As New OleDbConnection(ConnectionString)
Using DA As New OleDbDataAdapter("SELECT * FROM SWOT", conn)
Dim ds As New DataSet
DA.Fill(ds, "SWOT_Report")
swotBindingSource.DataSource = ds.Tables(0)
End Using
End Using
End Sub
更新后,您应该会自动在swotBindingSource
DataGridView 中看到更新。
由于缺少对象,您可能还必须对其余代码进行其他更改,每次需要myConnection
时创建一个新的 Connection 对象(类似于在子中的完成方式)会更好RefreshData
使用数据库而不是在应用程序启动时创建数据库并重新使用相同的连接。
推荐阅读
- jpa - 无法让 JPA 在 Wildfly 19.1 上工作
- rust - 在 Rust 中,我创建了一个 impl 返回类型,我可以将其作为参数传递。但是我没有找到将它存储在我的结构中的方法?
- tensorflow - ValueError: 层 lstm_34 的输入 0 与层不兼容:预期 ndim=3,发现 ndim=2。收到的完整形状:[无,25]
- flutter - 在 Flutter Dart Firestore 应用中实现收藏按钮
- excel - VBA代码莫名其妙地改变公式中的列
- sql - 如何在锁定步骤中在两列上应用过滤器值列表?
- swift - 如何使用 DateComponentsFormatter 将日期显示为“今天”或“昨天”?
- php - 无法在我的计算机中配置 PHP。你能检查我做错了什么吗?
- php - 针对嵌套 JSON 字段、MYSQL、PHP 的 QUERY
- google-apps-script - `clasp` 将 `.gs` 文件放在哪里?对“扣推”上的编译器错误进行故障排除