想实现的场景:点击form1里的按钮,弹出form2,填完数据后点确定,form1里的DataGridView同步更新,数据库也更新我的方法:自定义一个填充DataSet的方法,点击form2的确定按钮时调用此方法,并实例化form1,然后绑定DataGridView的数据源问题:datagridview没反应代码如下://自定义类wangyy 里的两个方法public static SqlConnection con()
  {//连接数据库
MyConn = new SqlConnection(strconn);
MyConn.Open();
return MyConn;
}
public static DataSet getDataSet(string SQLstr, string tableName)
  {   填充DataSet对象
con();
SqlDataAdapter SQLda = new SqlDataAdapter(SQLstr ,MyConn);
DataSet MyDs = new DataSet();
SQLda.Fill(MyDs,tableName);
MyConn.Close();
return MyDs;
}
 //form1的添加按钮private void button1_Click(object sender, EventArgs e)
{
//添加
Form4 form4 = new Form4();
form4.Visible = true;
}
 //form2的确定按钮private void button1_Click(object sender, EventArgs e)
{
try
{
wangyy.con();
cmd = new SqlCommand("insert into userinfo values('" + textBox1.Text + "','" + textBox2.Text + "')", wangyy.MyConn); 
cmd.ExecuteNonQuery();
wangyy.MyConn.Close();
DataSet ds = wangyy.getDataSet("select * from userinfo", "tianchong");
Form3 fm3 = new Form3();
fm3.dataGridView1.DataSource = ds.Tables[0];
MessageBox.Show("添加数据成功!");

catch
{ MessageBox.Show("添加数据出错!"); } 
}我的分不多啊,诸位请帮帮忙

解决方案 »

  1.   

    你两个窗体对数据源的访问各自独立,并且第二个窗体的代码也有问题,只加载了数据就要提示添加成功与出错?没有对数据修改的代码,更没有提交修改的代码!最好还是找个简单的例子看看!
    至于两个窗体的数据同步问题,你说form1里有个DataGridView,那在DataGridView与数据源之间加个DataBindingSource控件,并在显示第二个窗体的时间将其作为参数传过去,这是MSDN上说的,也可以按你自己的想法自行实现同步!
      

  2.   

    你要刷新FORM1中的数据,为什么在你的FORM2的BUTTON1的事件是FORM3而不是FORM1;你说FORM1里的按钮弹出FORM2,怎么又是FORM4;试一下下面的代码//form1的添加按钮private void button1_Click(object sender, EventArgs e)
    {
    //添加
    //Form4 form4 = new Form4();
    //form4.Visible = true;
    Form2 frm=new Form2();
    frm.Owner=this;
    frm.show();
    }
     //form2的确定按钮private void button1_Click(object sender, EventArgs e)
    {
    try
    {
    wangyy.con();
    cmd = new SqlCommand("insert into userinfo values('" + textBox1.Text + "','" + textBox2.Text + "')", wangyy.MyConn);  
    cmd.ExecuteNonQuery();
    wangyy.MyConn.Close();
    DataSet ds = wangyy.getDataSet("select * from userinfo", "tianchong");
    Form1 frm=(Form1)Owner;
    frm.dataGridView1.DataSource = ds.Tables[0];
    MessageBox.Show("添加数据成功!");
    }  
    catch
    { MessageBox.Show("添加数据出错!"); }  
    }
      

  3.   

    1、在from1中定义一委托,
    2、在from2中放一个from1中委托类型属性
    3、在from2 button1_Click事件中调用委托
      

  4.   

    晕,我表述有问题,其实应该是form3和form4的~~~
    我试下
      

  5.   

    谢谢各位啦,用flowfog的方法解决了其实我老是介绍过这种方法,但他说这种方法不安全望各位指教下啦
    我再想想其它方法去
    另外,这个怎么给你们分啊?(我第一次发帖,不会 - -)