【问题标题】:Refresh button - Refreshing data grid view after inserting, deleting, updating刷新按钮 - 插入、删除、更新后刷新数据网格视图
【发布时间】:2012-12-31 17:06:23
【问题描述】:

我正在尝试创建一个刷新按钮,以便在我完成更新后自动刷新我的 datagridview 中的数据。

但是,我的刷新按钮似乎不起作用。显示的数据与原始数据保持一致。只有在我手动结束我的 Windows 应用程序并重建它后它才会更新。

这是我的代码:

 private void button_refresh_Click(object sender, EventArgs e)
        {
            this.acuzioSecureStore_DatabaseXDataSet.AcceptChanges();
        }

请帮忙。谢谢^_^

【问题讨论】:

标签: c# winforms ms-access


【解决方案1】:

处理此问题的最简单方法是使用绑定源对象。

如果您将信息从 Access 数据库加载到 DataGridView 中,那么您很可能将数据存储在 Dataset 或 DataTable 中。

创建一个绑定源对象,一旦填充了数据表/数据集,将绑定源的数据源设置为数据表。然后将 DataGridView 中的 Datasource 设置为 Binding Source 对象。

这样做可确保您的 datagridview 中的任何更改或反映在 DataTable 中,反之亦然。如果您将数据重新加载到 DataTable 中,它将自动反映在数据网格中。

DataTable dt = new DataTable();

BindingSource bs = new BindingSource();

bs.DataSource = dt;

dataGridView1.DataSource= bs;

所有更改现在都将自动发生。

【讨论】:

  • 您必须将其作为一个新问题提出并显示您的代码。
【解决方案2】:

嘿,上面的解决方案很好,但是当执行上面的代码时,表格消失了,看不到。如果我执行

        da.Fill(ds, "p");
        dataGridView1.DataSource = ds.Tables["p"];

然后再次创建整个表。

【讨论】:

  • 您能否指定再次创建整个表的解决方案,以及影响(好、坏、其他)的影响。
【解决方案3】:
private void button_refresh_Click(object sender, EventArgs e)
        {
            SqlConnection con=new SqlConnection(@"");
            string query="select * from abc";
            SqlCommand cmd=new SqlCommand(query,con);
            SqlDataAdapter da=new SqlDataadapter(cmd);
            DataTable dt=new DataTable();
            da.Fill(dt);
            dataGridView1.DataSource=dt;
        }

【讨论】:

    【解决方案4】:

    我有一个 datagridview,绑定到实体框架数据库中的一个表:

    dataGridView1.DataSource = MyDatabase.MyTable;
    

    尽管浪费了两天,但它永远不会刷新。 我用一个简单的解决方法解决了它:

    private void button_refresh_Click(object sender, EventArgs e) {
        dataGridView1.DataSource = MyDatabase.MyTable.Where(i =>(true));
    }
    

    一个丑陋的解决方法,朋友向我解释了它是如何工作的——如果我只做dataGridView1.DataSource = database.table,它将缓存表并永远使用缓存的数据。事实上,每次我们创建一个新的虚拟查询时,都会阻止 .net 对其进行缓存。

    【讨论】:

      【解决方案5】:

      请试试这个,它对我有用,如果你有更好的选择,请告诉我。

      private void button3_Click(object sender, EventArgs e)
      {
          dataGridView1.Refresh();
      }
      

      【讨论】:

        【解决方案6】:

        您可以在 PageLoad 或 UserControl 加载事件上绑定 dataGridView 并在网格视图中调用加载事件后调用加载事件

        喜欢

        this.ucUsers_Load(null, null); // 来自 C# 的窗口

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-07-02
          • 1970-01-01
          • 2013-09-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多