提问人:VinceG 提问时间:5/11/2021 更新时间:5/11/2021 访问量:248
在数据库中插入和更新值后,如何从另一个窗体刷新数据网格视图?
How do I refresh my datagrid view from another form after I insert and update my values inside my database?
问:
我不确定在更新值并将其插入数据库后如何继续刷新数据网格视图。我知道我必须将数据库值绑定到另一个窗体,以便在我单击更新或插入按钮时,它们将在另一个窗体中用新内容填充我的 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;
}
但是当我在保存按钮中调用该函数时,它似乎跳过了它。
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。
答:
0赞
JakeCoughlan
5/11/2021
#1
对你的要求有点困惑,但refresh();应更新您的 DataGridView
评论
0赞
VinceG
5/11/2021
我希望我的 DGV 在编辑/插入表单关闭后刷新。我以前尝试过放置,但它仍然无法刷新我的 DGVf1.Refresh();
this.Close();
评论
Form1 f1 = new Form1();
f1.Show();
this.Close();
f1.Show()
Form1
Form1
Form1
Form1
Form2
Form1
Form2
Form1
Form2.