在运行时无法看到datagridview上的新添加项

时间:2012-11-23 12:30:03

标签: vb.net winforms datagridview

我有一个程序在访问数据库中插入数据,用户可以在数据网格视图中查看新添加的项目。在我向数据库添加新项目后,在程序运行时无法在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 个答案:

答案 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。

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

相关问题