Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 刷新按钮-插入、删除、更新后刷新数据网格视图_C#_Winforms_Ms Access - Fatal编程技术网

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

C# 刷新按钮-插入、删除、更新后刷新数据网格视图,c#,winforms,ms-access,C#,Winforms,Ms Access,我正在尝试创建一个刷新按钮,以便在完成更新后自动刷新datagridview中的数据 但是,我的刷新按钮似乎不起作用。显示的数据与原始数据保持一致。它只有在我手动结束windows应用程序并重建它后才会更新 这是我的密码: private void button_refresh_Click(object sender, EventArgs e) { this.acuzioSecureStore_DatabaseXDataSet.AcceptChanges

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

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

这是我的密码:

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

请帮忙。谢谢^ ^

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

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

创建绑定源对象,并在填充数据表/数据集后,将绑定源的数据源设置为数据表。然后将DataGridView中的数据源设置为绑定源对象

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

DataTable dt = new DataTable();

BindingSource bs = new BindingSource();

bs.DataSource = dt;

dataGridView1.DataSource= bs;

所有更改现在都将自动进行

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

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

然后再次创建整个表。

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

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

请尝试一下,它对我很有效,如果您有更好的选择,请告诉我

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

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


此.ucUsers_加载(null,null);//Windows From C#

相关问题可能会有所帮助-尝试过,但似乎没有真正起作用如何更新数据?能否指定重新创建的解决方案,以及整个表的影响(好、坏、其他)。您必须将其作为新问题提出来并显示代码。