我在对textbox进行数据绑定后,对数据的修改无法写回数据库:
//数据绑定
tb1.DataBindings.Add("Text",ds,"mytable.colunm1"); //更新
DataSet changesDataSet =  ds.GetChanges(DataRowState.Added | DataRowState.Modified);if(changesDataSet != null)
   da.Update(changesDataSet );在数据绑定后,数据可以显示在textbox(tb1)中,当我修改这个数据后,ds中的确也变成了我修改后的值,但是changesDataSet却是空的,因此就没法把我的修改写回数据库。
我把数据绑定到datagrid然后在datagrid做修改的话,changesDataSet就不为空。
请问这是为什么,我该怎么修改代码?谢谢各位

解决方案 »

  1.   

    1。在更新之前不要调用AcceptChanges()方法,
    这个我想你应该没有调用过,2。还有一种可能是,你可能是在编辑TextBox里的数据后点击保存按钮,那需要在
    按钮处理程序加一条条当前编辑状态的提交才会把TextBox的新数据写到DataSet.
    类似代码如下:
    // 停止当前的任何编辑。
    this.BindingContext[objMyDataSet,"Categories"].EndCurrentEdit();
    this.BindingContext[objMyDataSet,"Products"].EndCurrentEdit();具体可以看文章,
    http://blog.csdn.net/zhzuo/archive/2005/01/03/238273.aspx
      

  2.   

    谢谢,问题解决了,不过还有一个问题不太明白,
    this.BindingContext[objMyDataSet,"Products"].CancelCurrentEdit();
    这句应该是指对数据的更改被拒绝,但是我用的时候,第一次点击“取消”按钮时数据还是被更改了,从第二次起更改才被拒绝,请问这是为什么?谢谢