dataGridView与dataTable进行了绑定 
当我修改了第一行的数据 ,点击工具栏的保存,发现dataTable中对应的数据并没有改变需要把鼠标点击一下其他行,dataTable中数据才会有改变 ,这是怎么回事呢?有什么办法可以解决吗?

解决方案 »

  1.   

    绑定机制默认就是这样的, 但是往往不符合现实中的习惯
    人们编辑后, 通常兵不离开编辑框, 或者离开 datagridview 中的行,导致本行数据没有反映到 DataTable 中, 这个可以折中处理, 就是在 点击保存的时候做以下事情:bs.CurrencyManager.EndCurrentEdit();bs 是 BindingSource. 来结束当前编辑操作, 这会提交ui数据到数据源, 如果使用的 数据源不是 BindingSource,CurrencyManager 可以通过 控件的 BindingContext["s数据源名称"] 来得到.
      

  2.   

    在你点击保存后,加上下面的这句.this.datagridview1.EndEdit();
      

  3.   

    不知道你用得是VS 2005 还是多少,我刚用VS2005做了个试验,当我鼠标不离开编辑的地方,直接按保存按钮,通过断点,我看到修改已经被保存在Table中了,建议你在保存按钮那设个断点,看看此时的DataTable的值又没变
            private void btn2_Click(object sender, EventArgs e)
            {
              DataTable table =   this.dataGridView1.DataSource as DataTable;
            }
      

  4.   

    谢谢Dobzhansky 和 马宝兄
    两种方法都可以。