刷新按钮 - 插入,删除,更新后刷新数据网格视图

时间:2013-01-17 07:46:58

标签: c# winforms ms-access

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

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

这是我的代码:

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

请协助。谢谢^ _ ^

6 个答案:

答案 0 :(得分:4)

处理此问题的最简单方法是使用Binding Source对象。

如果从Access数据库将信息加载到DataGridView中,则最有可能将数据存储在数据集或DataTable中。

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

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

DataTable dt = new DataTable();

BindingSource bs = new BindingSource();

bs.DataSource = dt;

dataGridView1.DataSource= bs;

现在所有更改都会自动进行。

答案 1 :(得分:0)

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

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

然后再次创建整个表。

答案 2 :(得分:0)

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;
        }

答案 3 :(得分:0)

我有一个datagridview,绑定到Entity Framework数据库中的表:

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缓存它。

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

你可以在PageLoad或UserControl上绑定dataGridView加载事件和在网格视图中查看后调用加载事件

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