如何刷新新存储的数据的数据网格视图

本文关键字:数据 网格 视图 存储 数据网 新存储 何刷新 刷新 | 更新日期: 2023-09-27 18:37:19

大家好,我有一个DataGridView,里面有2列,FullNameVoteCount。我想刷新 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。

方式:

  1. 您可以在给定的时间间隔内使用 Microsoft Tick 类
  2. 执行此操作
  3. 您可以使用 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

有两种情况:

  • 如果频繁刷新数据网格视图,则将计时器设置为更新结果。
  • 如果在插入或更新操作后刷新,请在操作结束时将调用绑定方法。