我在form1里面有一个datagridview,点击按钮弹出from2,在from选择了一些数据,返回一个datatable表实例后,关闭form2,这时我想马上叫from1里面的datagridview绑定这个数据表,我是在from2里面写的,但是关闭了以后,from1里面的datagridview为什么没有刷新,还是空的,请问怎样解决?            Form2 a = new Form2();
            a.selTable = dataCon1;dataCon1这个表是在form2里面加工好了的。selTable是form1的datagridview绑定的。
            a.dataGridView1.DataSource = selTable;
            a.dataGridView1.Refresh();
            this.Close();
但是不刷新,我也有试过 a.dataGridView1.DataSource = dataCon1,也是不行。求解。
多谢大家,分不多!

解决方案 »

  1.   

    试试BindingSource
     
    BindingSource bs = new BindingSource();
     bs.DataSource = dataCon1;      
     this.dataGridView1.DataSource = bs;
      

  2.   

    在form2里定义几个form1里面要用到的字段变量 重构这几个变量 用form2.ShowDialog() 将 form2弹出 选好数据 赋值到这几个变量里 关闭form2 ,这时候form1也能调用到这几字段变量 然后将它们重新绑定到form1 的 datagridview里
      

  3.   

    dataCon1是建立在Form2的吧 你关闭了Form2就没了。不能传递到Form1  
    笨点的方法是用静态类
      

  4.   

    看你的代码怎么Form2 a = new Form2();
    然后又a.a.dataGridView1.DataSource = selTable;
    莫非datagridview在form2里面吗?
    datagridview应该在form1里面呀。
      

  5.   


    是的,五楼,对不起,我写错了,是在form1里面的,我写错了!!!
      

  6.   

    4楼,在form2关闭之前,我也把它付给form1里的.selTable了呀?为什么还是不行呢?
      

  7.   

    加个断点,看 dataCon1里面有没有数据。
      

  8.   


            //子窗体
            public event EventHandler MySelectedChanged; //选择数据源事件        public DateTable MyDataSource  //子窗体选择的数据源
            {
                get ;            
                set ;
            }        private void button1_Click(object sender, EventArgs e)
            {
                MyDataSource = _dataTable; //设定数据源
                if (MySelectedChanged!= null)
                {
                    MySelectedChanged(this, e); //触发绑定事件
                }
            }        //父窗体
            private form2 m_dlg;        private void button1_Click(object sender, EventArgs e)
            {
                if (m_dlg == null)
                {
                    m_dlg = new form2();
                    m_dlg.MySelectedChanged+= new EventHandler(m_dlg_MySelectedChanged);
                    m_dlg.FormClosed += new FormClosedEventHandler(m_dlg_closed);
                    m_dlg.Show(this);
                }
                else
                {
                    m_dlg.Activate();
                }
            }        private void m_dlg_MySelectedChanged(object sender1, EventArgs e1)
            {
                dgv.DataSource = m_dlg.MyDataSource;
            }        private void m_dlg_closed(object sender1, EventArgs e1)
            {
                m_dlg = null;
            }
      

  9.   

    这样改一下:
                a.dataGridView1.Columns.Clear();
                a.dataGridView1.DataSource = null;
                a.dataGridView1.DataSource = table;