1

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

这是我加载datagridview的方式:

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

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

4

4 回答 4

1

我创建了一个模块,它将调用 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

希望这对其他人有帮助!

于 2012-12-02T00:31:04.707 回答
0

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

选项 1 不适用于 MS Access。

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

于 2012-11-25T00:11:07.233 回答
0

尝试环绕beginedit ... 结束编辑

 gridview.BeginEdit();
 ----
 gridview.EndEdit();
于 2012-11-23T12:39:02.993 回答
0

我不熟悉访问(我使用oracle)。如果数据库发生变化,Oracle 数据库可以通知您,因此您可以刷新 datagridview。在您的情况下,您可以有一个按钮(用于刷新 datagridView)或一个计时器并每 x 次刷新一次(您知道时间):

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

也许你想看看DataGridView DataBinding

于 2012-11-23T12:57:22.690 回答