C# 为什么我的datagrid在更新数据库后没有更新?

C# 为什么我的datagrid在更新数据库后没有更新?,c#,mysql,datagridview,.net-2.0,C#,Mysql,Datagridview,.net 2.0,我在这里有一个刷新和填充函数 private void Refresh() { MySqlCommand cmd = conn.CreateCommand(); String data, id, platenumber, brand, model, yearmodel, odometer; cmd.CommandText = "SELECT * FROM vehicle"; cmd.CommandType = CommandType.Text

我在这里有一个刷新和填充函数

private void Refresh()
{
    MySqlCommand cmd = conn.CreateCommand();
    String data, id, platenumber, brand, model, yearmodel, odometer;

    cmd.CommandText = "SELECT * FROM vehicle";
    cmd.CommandType = CommandType.Text;

    MySqlDataReader reader = cmd.ExecuteReader();

    while (reader.Read())
    {
        id = reader.GetInt32(0).ToString();
        platenumber = reader.GetString(1);
        brand = reader.GetString(2);
        data = $"{ id}/{ platenumber}/{ brand}";
    }

    reader.Close();

    PopulateDataGrid();
}

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;
}
这是我的更新功能

private void savebtn_Click(object sender, EventArgs e)
{
    Form1 f1 = new Form1();

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

    int ID = newid;

    MySqlCommand cmd = new MySqlCommand("update vehicle set platenumber=@platenumber 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.MinDate;
    //cmd.Parameters.Add("@exdate", MySqlDbType.Date).Value = regexp.MinDate;
    cmd.Parameters.Add("@odometer", MySqlDbType.Decimal).Value = odometer.Text; 

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

    f1.Refresh();

    this.Close();
}

问题是,当我单击FORM2上的save按钮时,datagrid上的所有内容都保持不变,但当我单击FORM1中的refresh按钮时,它使用的代码相同。即使我将函数放在FORM2中,在单击update按钮后,它仍然不会刷新datagrid。这里缺少什么?

DGV不会自动重新绘制。诀窍是设置为null:f1.dataGridView1.DataSource=null;f1.dataGridView1.DataSource=datatable;客户端将显示上次检索到的内容。对DBMS的更新仅在您再次检索或绑定时显示。-想象一下,对于一个毫无戒心的用户来说,自动更新是多么不方便!提示:始终显示重新查看数据的时间和日期!在
PopulateDataGrid
savebtn\u Click
方法中都有一行代码…
Form1 f1=new Form1()…这看起来很奇怪,毫无疑问,
f1
上的任何控件都可能会被更新,但是表单永远不会显示给用户。因此,更新可能正在发生,只是您无法看到它们,因为从未显示
f1
。您希望显示多少个
表单1
?在这两种方法中…添加代码行…
f1.Show()…您将看到问题所在。您可能希望了解如何在两个
表单之间传递数据…