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()代码>…您将看到问题所在。您可能希望了解如何在两个表单之间传递数据…