有两个窗口,Form1和Form2
Form1中有个datagrid1绑定到一个数据库表
现在我在Form2中添加了一行数据到该数据库表,我在点击了添加按钮后如何才能让Form1中的dataGrid1自动更新呢?
我写的代码是这样的,但是却不起作用private void btn_add_Click(object sender, System.EventArgs e)
  {
   addInfomation();\\此处添加数据到数据库,省略   DataBindingdata();   MessageBox.Show("添加记录成功");
  }
private void DataBindingdata()
  {
   String Ole = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Client.mdb;";
   OleDbConnection conn = new OleDbConnection(Ole);
   String Olecmd = "* FROM author ORDER BY id";
   conn.Open();
   DataTable tempTable = new DataTable();
   OleDbDataAdapter da = new OleDbDataAdapter(Olecmd,conn);
   da.Fill(tempTable);
   conn.Close();
   DataView dv = new DataView(tempTable);
   Form1 er = new Form1();//在这里绑定到Form1中dataGrid1
   er.dataGrid1.DataSource = dv;   
  }

解决方案 »

  1.   

    一个简单的方法是把er.dataGrid1.DataSource再设置一次er.dataGrid1.DataSource = null; //首先要清空一下
    er.dataGrid1.DataSource = dv;
      

  2.   

    在form2中通过form1中Datagrid绑定的数据源进行添加,这里一方面更新绑定的数据源,一方面更新数据库。
      

  3.   

    大致的步骤如下:
    1、在打开form2的是否,先获取form1中datagrid的数据源,即DataTable;
    2、在form2中,通过DataTable进行添加新记录的操作;
    3、通过DataTable来更新数据库,从而达到数据库的更新操作。ps:至于form1的Datagrid会自动更新,因此不用作多余的操作。
      

  4.   

    这里有问题.
    Form1 er = new Form1();//在这里绑定到Form1中dataGrid11.在Form1调用Form2时,把"this"做为一个参数传递过去.2.在Form2的中定义一个 Form1 er = null.定义一个带参数的构造函数
    public Form2(Form1 fm)
    {
       er = fm;

    3.删除 Form1 er = new Form1();//在这里绑定到Form1中dataGrid1 试试
      

  5.   

    您这个办法在别的地方可能适用,但我这个有点不一样
    刚才我贴代码的时候为了省事,用String Olecmd = "select * FROM author ORDER BY id";来选择数据库了,实院上是"select [id] as [编号],[name] as [姓名]..."等,在dataGrid1里我并没有把所有的数据列都显示出来,但添加的时候必须要全部加了.这样用您的办法,我就没法添加dataGrid1里没有有列了
      

  6.   

    colaxu(飞翔),你的er在哪里定义的?
      

  7.   

    Form2中,定义为一个全局的 private 就ok了.
      

  8.   

    public Form2(Form1 fm)
    {
       //要包含不带参数的构造函数的内容.
       ......
       er = fm;

      

  9.   

    你跟踪一下 er.dataGrid1.DataSource = dv;   的时候dv里面数据。有没有你add的数据存在.
      

  10.   

    搞定了,刚出晕头了,引用后居然没有引用绑定方法.
    非常感谢colaxu(飞翔) .我这小菜又学到东西了