C# 在数据库中插入并更新值后,如何从另一个窗体刷新datagrid视图?

C# 在数据库中插入并更新值后,如何从另一个窗体刷新datagrid视图?,c#,mysql,datagridview,.net-2.0,C#,Mysql,Datagridview,.net 2.0,在更新数据并将值插入数据库后,我不确定如何继续刷新数据网格视图。我知道我必须将数据库值绑定到另一个表单,这样当我单击“更新”或“插入”按钮时,它们将用新内容填充另一个表单中的DGV 到目前为止,这就是我所拥有的 这是我填充Datagrid的代码: private void PopulateDataGrid() { Form1 f1 = new Form1(); MySqlCommand cmd = conn.CreateCommand();

在更新数据并将值插入数据库后,我不确定如何继续刷新数据网格视图。我知道我必须将数据库值绑定到另一个表单,这样当我单击“更新”或“插入”按钮时,它们将用新内容填充另一个表单中的DGV

到目前为止,这就是我所拥有的

这是我填充Datagrid的代码:

private void PopulateDataGrid()
    {

        Form1 f1 = new Form1();

        MySqlCommand cmd = conn.CreateCommand();
        DataTable datatable = new DataTable();

        cmd.CommandText = "select id,platenumber,brand,model,yearmodel,regdate,exdate,odometer from vehicle";
        cmd.CommandType = CommandType.Text;

        dataAdapter = new MySqlDataAdapter(cmd);
        dataAdapter.Fill(datatable);
        f1.dataGridView1.DataSource = datatable;

    }
但是,当我调用save按钮中的函数时,它似乎跳过了它

private void savebtn_Click(object sender, EventArgs e)
        {

            Form1 f1 = new Form1();
            DataTable dt = new DataTable();

           int newid = Convert.ToInt32(idtxt.Text);

           int ID = newid;

            MySqlCommand cmd = new MySqlCommand("update vehicle set platenumber=@platenumber, brand=@brand, model=@model, yearmodel=@yearmodel, regdate=@regdate, exdate=@exdate, odometer=@odometer where ID = @id" , conn);

            cmd.Parameters.AddWithValue("@id", ID);
            cmd.Parameters.Add("@platenumber", MySqlDbType.VarChar, 10).Value = pnumber.Text;
            cmd.Parameters.Add("@brand", MySqlDbType.VarChar, 60).Value = brand.Text;
            cmd.Parameters.Add("@model", MySqlDbType.VarChar, 45).Value = model.Text;
            cmd.Parameters.Add("@yearmodel", MySqlDbType.Int32).Value = yearmodel.Text;
            cmd.Parameters.Add("@regdate", MySqlDbType.Date).Value = datereg.Value;
            cmd.Parameters.Add("@exdate", MySqlDbType.Date).Value = regexp.Value;
            cmd.Parameters.Add("@odometer", MySqlDbType.Decimal).Value = odometer.Text;

            int i = cmd.ExecuteNonQuery();
            if (i != 0)
            {
                MessageBox.Show("Success");
            }
            else
            {   
                MessageBox.Show("Fail");
            }


            PopulateDataGrid();

            

            this.Close();
        }

当我单击按钮更新/插入数据库并关闭单独的表单时,我对刷新DGV应该做什么感到困惑。

对您要求的内容感到困惑,但是刷新();应更新您的datagridview

我希望我的DGV在编辑/插入表单关闭后刷新。我已尝试放置
f1.Refresh()
在此之前
this.Close()但它仍然无法刷新我的DG。很明显,您没有阅读上一个问题中关于同一件事的我的评论……代码行…
Form1 f1=new Form1()…这两种方法都是您的问题。您从不显示这些表单,因此您的代码在一个没有人会看到的表单上工作。这就是为什么你看不到这些变化。嗨,对不起,我确实读了你在我上一篇文章中的评论。我添加了
f1.Show()
在此之前
this.Close()成功了。我看到了我的DGV的变化。但是,一旦我完成更新/插入,我的Form1中的2个现在已打开。我只需要在更新/插入之前打开编辑/插入表单的表单之后显示1个表单1。我知道
f1.Show()
会做什么,这就是我的观点,在两种方法中更新网格的代码都使用自己的第二个
Form1
,这与您看到的
Form1
不同。我想这会让你明白为什么你没有看到自己的改变。不显示第二个
表单1
不会改变任何内容。代码仍在引用“不同的”
Form1
比你看到的要多。如果你想
Form2
引用
Form1
中的内容,那么你必须在
Form1
创建并显示
Form2时将内容传递给
Form2。
这是我在你前面的问题中的上一个链接演示的……如何在两张表格。嘿,谢谢,伙计,我终于拿到了@JohnG