在运行时看不到数据网格视图上新添加的项



我有一个在访问数据库中插入数据的程序,用户可以在数据网格视图中查看新添加的项目。将新项目添加到数据库后,当程序运行时,在数据网格视图中看不到它。我必须停止程序并再次运行它才能看到我所做的更改。

以下是我加载数据网格视图的方式:

Public Class frmSupplies
Private Sub frmSupplies_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'TODO: This line of code loads data into the 'SuppliesDataSet.product_info' table. You can move, or remove it, as needed.
    Me.Product_infoTableAdapter.Fill(Me.SuppliesDataSet.product_info)
End Sub

如何在程序仍在运行时查看新添加的项目?

我创建了一个模块,该模块将为datagridview调用"刷新"函数。我向我的项目添加了一个新模块并添加了以下代码:

Imports System.Data.OleDb
Module Module1
Dim con As New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data Source= database path")
Sub REFRESHDGV()
    Dim sql As String
    sql = "SELECT * FROM [product info]"
    Dim adapter As New OleDbDataAdapter(sql, con)
    Dim dt As New DataTable("product info")
    adapter.Fill(dt)
    Form1.dgv1.DataSource = dt
End Sub
End Module

希望这对其他人有所帮助!

尝试环绕开始编辑...结束编辑

 gridview.BeginEdit();
 ----
 gridview.EndEdit();

我不熟悉访问(我使用oracle)。Oracle 数据库可以在数据库中发生更改时通知您,因此您可以刷新数据网格视图。在您的情况下,您可以有一个按钮(用于刷新 datagridView)或一个计时器,并每隔 x 次刷新一次(您知道时间):

'I imagine that you have a bindingSource
 bindingSource1.DataSource = Product_infoTableAdapter.GetData()
 bindingSource1.ResetBindings(false)

也许您想看看 DataGridView DataBinding

当您将 Access 表绑定到 Windows 窗体上的网格,然后更改该应用程序外部的数据时,窗体或网格根本无法知道数据已更改,除非 1) 它们从 Access 收到某种通知,或 2) 应用程序不断查询数据源以查看是否进行了更改。

选项 1 不适用于 MS 访问。

您唯一的选择是在窗体上放置一个计时器,以定期检查更改(按固定间隔),然后重新加载表并在发现更改时刷新网格。

最新更新