private void button1_Click(object sender, EventArgs e)
        {
            string sql = "insert into test(a,b)values('1','1')";
            OleDbCommand comm = new OleDbCommand(sql, conn);
            try
            {
                conn.Open();
            }
            catch { }
            comm.ExecuteNonQuery();
            testTableAdapter.Fill(ccDataSet.test);
        }        private void button2_Click(object sender, EventArgs e)
        {
            string sql = "insert into test(a,b)values('1','1')";
            OleDbCommand comm = new OleDbCommand(sql, conn);
            try
            {
                conn.Open();
            }
            catch { }
            comm.ExecuteNonQuery();
            conn.Close();
            //这里有个关闭连接
            testTableAdapter.Fill(ccDataSet.test);
        }
        private void button3_Click(object sender, EventArgs e)
        {
            string sql = "insert into test(a,b)values('1','1')";
            OleDbCommand comm = new OleDbCommand(sql, conn);
            try
            {
                conn.Open();
            }
            catch { }
            comm.ExecuteNonQuery();
            MessageBox.Show("添加完成,如果你快速按回车关闭此消息框,datagridview就不会刷新,求解决方法(不要用上面的关闭数据库,感觉那样会很慢)");
            //这里有个消息框
            testTableAdapter.Fill(ccDataSet.test);
        }
上面三种方式添加数据,绑定数据库的datagirdview为何只有第二种能刷新啊。第三种为何速度快了就不刷新了

解决方案 »

  1.   


    至少得把 comm 关闭吧? 数据都导出了, 你还要comm 干嘛?
      

  2.   

    private void button1_Click(object sender, EventArgs e)
            {
                string sql = "insert into test(a,b)values('1','1')";
                OleDbCommand comm = new OleDbCommand(sql, conn);
                try
                {
                    conn.Open();
                }
                catch { }
                comm.ExecuteNonQuery();
                comm.Clone();
                dataGridView1.DataSource = testBindingSource;
                testTableAdapter.Fill(ccDataSet.test);
            }
    重新获取还是跟原来一样。很诡异的需要一个时间间隔,象这样,第一次的操作不刷新,后面的刷新前一次的
      

  3.   

    楼上你用comm.Clone();干吗?克隆一个OleDbCommand做什么?如果不及时刷新,很可能是界面得不到刷新的机会,此时只要手动调用dataGridView1.Refresh()方法即可。
      

  4.   

    dataGridView1.Refresh()同样不能刷新
      

  5.   

    添加数据后,重新绑定就是
    testTableAdapter.Fill(ccDataSet.test);
    dataGridView1.DataSource = testBindingSource;
      

  6.   

    贴出所有代码看看,dataGridView1.DataSource 直接绑定dataset数据集是否可以
      

  7.   

    http://51.dc.ftn.qq.com/ftn_handler/c915c336bb7e05be7818970c059535e3e0fb163f3107e3c40a97a4d1e7e19e7568ec945fbd0d6ecfb199b12cbf7a2fbc722218912851739292092c8ea20678f0/test.rar?k=0f3436343135c9cd56e9b12f1338051d510c0107070f0f051e0350000415035456501b560100051f55025300540e075105040507353037465647421a47594532使用QQ旋风下载 (提取码 34645872) 这是测试程序,请查看 
      

  8.   

    datagridview重新赋值要先解除绑定
      

  9.   

    纳米盘
    http://d.namipan.com/d/28faeabf8a4f3ada307c8d0795f032df3c54a4f6fcf20100
      

  10.   

    BindingSource.EndEdit();时会即时刷新的。
      

  11.   

    修改了的。因为这条语句
    testTableAdapter.Fill(ccDataSet.test);
    如果让他稍微延时1秒执行就能刷新显示了,而且执行完sql语句,数据库已经更改,只是datagridview不会刷新,如果时间间隔1秒再执行
    testTableAdapter.Fill(ccDataSet.test);
    就能刷新显示,真是古怪啊
      

  12.   

    刷新就一条代码:    dataGridView1.DataBind();其它代码都是为了让这一行显示出来的结果更加正确而在前边添加的。
      

  13.   


    DataBind()是从Control继承的,也就是说所有控件——不论是可见的还是系统不可见的,都有这个重要方法。
      

  14.   

    Winform中的Control确实没有DataBind这个方法。
    Webform中的才有。
      

  15.   

    dataGridView的刷新需要给dataGridView1.DataSource重新绑定一次数据源才能执行