如何刷新新存储的数据的数据网格视图
本文关键字:数据 网格 视图 存储 数据网 新存储 何刷新 刷新 | 更新日期: 2023-09-27 18:37:19
大家好,我有一个DataGridView,里面有2列,FullName和VoteCount。我想刷新 DataGridView,以便对数据库中的更改进行更改。如何在不关闭窗体或单击任何按钮的情况下刷新数据网格视图?可能吗?
这是我的代码:
private void President()
{
sc.Open();
cmd = new SqlCommand("SELECT (LastName + ', ' + FirstName + ' ' + MiddleName) as FullName,Vcount as VoteCount FROM TableVote WHERE Position='President'", sc);
try
{
_da = new SqlDataAdapter();
_da.SelectCommand = cmd;
DataTable _dt = new DataTable();
_da.Fill(_dt);
BindingSource bs = new BindingSource();
bs.DataSource = _dt;
PresDG.DataSource = bs;
_da.Update(_dt);
PresDG.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
PresDG.Columns["FullName"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
PresDG.Columns["VoteCount"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
PresDG.Columns["VoteCount"].Width = (100);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
sc.Close();
}
}
我认为您必须重新填充完整的DataGridView。
方式:
- 您可以在给定的时间间隔内使用 Microsoft Tick 类 执行此操作
- 您可以使用 Microsoft Tick-Class 来检查数据库中的更改。如果有一些更改,请重新填充完整的 DataGridView。
当您想要刷新数据时,请调用此函数。
YourGrid.DataSource = Refresh("SELECT...");
private BindingSource Refresh(string sql)
{
try
{
using (var da = new SqlDataAdapter(sql, new SqlConnection(Properties.Settings.Default.ConnectionString)) { FillLoadOption = LoadOption.Upsert })
{
da.SelectCommand.Connection.Open();
da.Fill(dataSet.YourTable);
}
}
catch(Exception ex) { MessageBox.Show(ex.Message); }
return new BindingSource(dataSet, "YourTable");
}
您的数据库是否经常更新? 如果是这样,您可以使用计时器使用定期更新。
使用计时器并执行此操作
string connectionString = "SERVER=" + server + ";" + "DATABASE=" +
database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";
MySqlConnection conn = new MySqlConnection(connectionString);
MySqlDataAdapter adptr = new MySqlDataAdapter("Select * FROM " + tableName, conn);
DataTable tabloSql = new DataTable();
adptr.Fill(tabloSql);
dataGridView1.DataSource = tabloSql;
注意:如果程序未对数据表进行更改,请执行此操作。如果在刷新表时对数据表进行更改,则对数据表的更改将删除
您可以使用 Sql 服务器 CLR 集成。这里这里
在阅读一番之后,我将发布更多详细信息,但我希望它能为您提供方向,否则您可能会找到解决方案。
更新可以创建一个触发器应用程序,并使用该触发器应用程序调用绑定网格视图的方法。这是一个很好的例子来编写触发器并实现它。
CLR SP
有两种情况:
- 如果频繁刷新数据网格视图,则将计时器设置为更新结果。
- 如果在插入或更新操作后刷新,请在操作结束时将调用绑定方法。