我有一个程序在访问数据库中插入数据,用户可以在数据网格视图中查看新添加的项目。在我向数据库添加新项目后,在程序运行时无法在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
如何在程序运行时查看新添加的项目?
答案 0 :(得分:1)
我创建了一个模块,它将为datagridview调用“refresh”函数。我在项目中添加了一个新模块,并添加了以下代码:
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
希望这有助于其他人!
答案 1 :(得分:0)
尝试环绕beginedit ...结束编辑
gridview.BeginEdit();
----
gridview.EndEdit();
答案 2 :(得分:0)
我不熟悉访问(我使用oracle)。如果数据库中存在更改,Oracle数据库可以通知您,因此您可以刷新datagridview。在你的情况下,你可以有一个按钮(用于刷新datagridView)或一个计时器,每x次刷新一次(你知道时间):
'I imagine that you have a bindingSource
bindingSource1.DataSource = Product_infoTableAdapter.GetData()
bindingSource1.ResetBindings(false)
也许您想查看DataGridView DataBinding
答案 3 :(得分:0)
当您将Access表绑定到Windows窗体上的网格然后更改该应用程序之外的数据时,表单或网格根本无法知道数据已更改,除非1)他们收到某种类型来自Access的通知,或2)应用程序不断查询数据源以查看是否进行了更改。
选项1不适用于MS Access。
您唯一的选择是在表单上放置一个计时器以定期检查更改(按固定间隔)并重新加载表并在发现更改时刷新网格。