每次按下刷新按钮时DataGridView都会重复vb.net

Posted

技术标签:

【中文标题】每次按下刷新按钮时DataGridView都会重复vb.net【英文标题】:DataGridView duplicating everytime I press refresh button vb.net 【发布时间】:2021-04-01 11:14:18 【问题描述】:

我正在尝试刷新我的 DataGridView1。我想我必须添加一个清除功能,因为每次按下刷新按钮时它都会不断复制数据。我没有使用 DataGridView1 的数据源。

提前感谢您的宝贵时间。

编码:

    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 Risk_Register", myConnection)
    DA.Fill(DS, "Risk_Register")
    Dim view1 As New DataView(tables(0))
    source1.DataSource = view1
    DataGridView1.DataSource = view1
    DataGridView1.Refresh()

End Sub

【问题讨论】:

【参考方案1】:

Fill 方法可以复制行,

Fill 操作将行添加到指定的目标 DataSet 中的 DataTable 对象,如果存在则创建 DataTable 对象 尚不存在。创建 DataTable 对象时,Fill 操作通常只创建列名元数据。然而,如果 MissingSchemaAction 属性设置为 AddWithKey,适当 还会创建主键和约束。

如果存在主键信息,任何重复的行都会被 调和并且只在对应的DataTable中出现一次 到数据集。主键信息可以通过以下方式设置 FillSchema,通过指定 DataTable 的 PrimaryKey 属性,或 通过将 MissingSchemaAction 属性设置为 AddWithKey。

https://docs.microsoft.com/en-us/dotnet/api/system.data.oledb.oledbdataadapter.fill?view=netframework-4.7

确保在目标表上定义了 PK。或者在填充之前清除表格,但要注意表格参与的 FK 和关系(如果有)。

【讨论】:

我试图在填充之前清除 DataGridView1,但这对我来说也不管用 DataGridView1.Rows.Clear()。我没有使用数据源,是的,我在表中定义了一个 PK。它只是复制 vb.net 应用程序上的表,而不是我的 Access 数据库。 我收到一条错误消息,提示“无法清除列表” 清除 DataTable,而不是 DataGridView 我可以在 Refreshdata() 之前添加这个吗?还有我以前从未使用过的清除 DataTable 的格式是什么? 如果这是填充 DS 的唯一数据检索点,您可以清除整个 DS。 DS.Clear() 然后DA.Fill(DS, ...)【参考方案2】:

我认为你应该调用适配器下可用的更新方法。

【讨论】:

抱歉,不明白你的意思。

以上是关于每次按下刷新按钮时DataGridView都会重复vb.net的主要内容,如果未能解决你的问题,请参考以下文章

按下按钮时播放随机声音[重复]

每次按下按钮都会触发本机 TextInput onSubmitEditing

oracle apex 只刷新一个区域而不是整个页面

每次点击保存时,我的按钮或文本都会重复?

每当我按下继续按钮删除任务时,它都会显示以下错误并关闭应用程序[重复]。

通过单击按钮刷新另一个表单 DataGridView