form2中的datagridview在从form2插入后自动刷新
我有一个小问题,我在Form1中使用SQL命令插入data2中的datagridview,但在包含INSERT命令的按钮单击后,新插入的值不会出现在form1的datagridview中。 有什么办法可以解决这个问题吗?
所以我不得不在form1中刷新按钮,这样每次插入内容时都可以刷新它。
提前致谢。
这是form2中按钮单击的插入代码:private void btn_zaj_uloz_Click(object sender,EventArgs e){
SqlCommand prikaz = new SqlCommand
("INSERT INTO zajezd(akce,name,zeme,hotel,h_adresa,odjdate,pridate,pocdnu,pocnoc,klimax)values(@zakce,@zname,@zzeme,@zhotel,@zh_adresa,@zodjdate,@zpridate,@zpocdnu,@zpocnoc,@zklimax)", spojeni);
prikaz.Parameters.AddWithValue("zakce", zakce.Text);
prikaz.Parameters.AddWithValue("zname", zname.Text);
prikaz.Parameters.AddWithValue("zzeme", zzeme.Text);
prikaz.Parameters.AddWithValue("zhotel", zhotel.Text);
prikaz.Parameters.AddWithValue("zh_adresa", zh_adresa.Text);
prikaz.Parameters.AddWithValue("zodjdate", zodjdate.Text);
prikaz.Parameters.AddWithValue("zpridate", zpridate.Text);
prikaz.Parameters.AddWithValue("zpocdnu", zpocdnu.Text);
prikaz.Parameters.AddWithValue("zpocnoc", zpocnoc.Text);
prikaz.Parameters.AddWithValue("zklimax", zklimax.Text);
spojeni.Open();
prikaz.ExecuteNonQuery();
System.Data.DataTable dt = new System.Data.DataTable();
System.Data.SqlClient.SqlDataAdapter SDA = new System.Data.SqlClient.SqlDataAdapter("SELECT * FROM zajezd", spojeni);
SDA.Fill(dt);
spojeni.Close();
this.Close();
}
关于代码的一些问题。 除非我错过了某些东西,否则片段会执行插入操作(没关系),然后读取所有数据,但对结果没有任何影响,所以Form1实际上从未意识到发生了什么。
你需要做的是一些如何通知Form1 Form2已经完成插入,并传回数据。 网格应该具有某种数据源,它需要显示行,并且您需要在Form2中添加新创建的数据。 我能想到的最好方法是在Form1上创建一个Form1将要订阅的事件,并传递重新创建记录所需的所有数据。
首先创建事件处理程序数据:
public class InsertCompleteEventArgs : EventArgs
{
public string zakce {get;set;}
public string zname {get;set;}
/*other fields go here*/
}
在Form2中,声明事件:
public event EventHandler<InsertCompleteEventArgs> InsertComplete;
protected void OnInsertComplete(string zakce, string zname /*other data*/)
{
EventHandler<InsertCompleteEventArgs> handler = this.InsertComplete;
if(handler!=null)
{
handler(this,new InsertCompleteEventArgs(){zakce=zakce,zname=zname});
}
}
在你的代码中,替换额外的“SELECT * FROM zajezd”,改为引发事件:
This.OnInsertComplete(zakce.Text,zname.Text);
因此,随着Form2每次插入新记录时都会引发一个事件,因此任何感兴趣的人都可以告诉自己何时进行更新。 剩下要做的就是在启动Form2时从Form1订阅该事件:
public Button_Click(object sender, EventArgs e)
{
/* This will be your existing code when you show Form2 */
Form2 form=new Form2();
form.Insertcomplete += this.Form2_InsertComplete; //this is where the notification is requested
form.Show();
}
public Form2_InsertComplete(object sender, InsertCompleteEventArgs e)
{
/* From here you add the new record to the existing DataSource of the DataGridView using the properties of the "e" object you receive */
}
链接地址: http://www.djcxy.com/p/71159.html
上一篇: datagridview in form1 automatic refresh after insert from form2
下一篇: Configuring NAMESPACE and DESCRIPTION when using a Suggested Package