【问题标题】:Datagridview autoupdate from database everytime open that form每次打开该表单时,Datagridview 都会从数据库自动更新
【发布时间】:2019-10-22 18:04:20
【问题描述】:

在 VS2019 中添加创建 GUI 时,您可以添加 TableDataAdapter,它将添加/显示显示该表数据的 Datagrid。在设计器中使用此代码this.data1TableAdapter.Fill(this.test1DataSet.data1);

但问题是,如果数据库/表中有任何更改,它们将不会反映在该数据网格中。 我尝试使用data1DataGridView.Update();data1DataGridView.Refresh();,但它实际上什么也没做。 比我添加我的数据库连接字符串作为数据源。(我知道那是愚蠢的尝试,但我还是尝试了。)这显然没有奏效,并删除了我在数据网格中显示的任何(未更新)数据。

所以这是我的问题,有没有什么简单的方法可以在每次数据库/表发生变化时自动更新?

免责声明:我有它的工作,但另一种方式。我也会分享的。

System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection();
conn.ConnectionString = @"Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\Documents\test1.mdb";

OleDbCommand comm = new OleDbCommand("SELECT * FROM data1;", conn);

conn.Open();
OleDbDataAdapter dap = new OleDbDataAdapter(comm);
DataTable ds = new DataTable();

dap.Fill(ds);
data1DataGridView.DataSource = ds;
comm.ExecuteNonQuery();

conn.Close();

【问题讨论】:

  • BindingSource Class (在SO上搜索,MSDN例子不是很有趣)。

标签: c# winforms datagridview


【解决方案1】:

在我看来,你可以做两件事。

1- 创建一个刷新按钮并在该按钮处调用用户定义的函数刷新

公共无效刷新(对象发送者,EventArgs e) { System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(); conn.ConnectionString = @"Provider = Microsoft.Jet.OLEDB.4.0; 数据源 = C:\Documents\test1.mdb"; OleDbCommand comm = new OleDbCommand("SELECT * FROM data1;", conn); conn.Open(); OleDbDataAdapter dap = new OleDbDataAdapter(comm); 数据表 ds = 新数据表(); dap.填充(ds); data1DataGridView.DataSource = ds; comm.ExecuteNonQuery(); conn.Close(); }

此功能在您每次单击时将数据重新绑定到新表

2- 您可以使用计时器控件来刷新数据网格。我贴的是链接how to use timer control in c#你可以关注一下,简单的把上面的Refresh函数定义粘贴到定时器控件中。它会根据您提供的时间间隔刷新您的数据网格。

【讨论】:

  • 我已经在使用选项 1 并且可以正常工作。但是我的问题是,为什么它不能自行更新,而只能显示我创建该 datagrid.option 2 时的数据。无论如何,在其更新时确实没有必要。但是感谢您的努力。
  • @HungryCoder 这样想……您的应用正在从数据库中请求数据。没有办法告诉数据库将信息发送到一个或多个可能在也可能不在 PC/Web 服务器上运行的应用程序。数据库接受请求,它不广播事件。您的应用有责任从数据库请求它需要的内容。
  • @HardCode 感谢您引起我的注意。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-24
  • 1970-01-01
  • 2016-09-14
  • 1970-01-01
  • 2017-08-04
  • 1970-01-01
相关资源
最近更新 更多