所描述的问题出现是正常的.第一中操作能够正常执行是因为你操作的是datagrid对应的数据源,那么能够引起更新操作,而第二中直接直接操作字段不会引起更新的操作;
修改也很简单,你需要将tab2操作字段的代码更新成对与datagrid的数据源操作就可以了

解决方案 »

  1.   

    private BindingManagerBase bmCustomers;...
    oleDbDataAdapter1.Fill(dataSet11);
    bmCustomers=this.BindingContext[dataSet11,"customer"];
    .....
    private void DataGrid1_CurrentCellChanged(object sender, System.EventArgs e)
    {
    bmCustomers.Position=DataGrid1.CurrentCell.RowNumber;
    }每当选定不同的ROW,textbox中的值是随之自动改变的。
    就是说每当改变某个textbox的值,照理说dataSet11中那Row的对应字段值也变的(因为textbox是绑定的)
    可问题就是当textbox改变后,按“保存”,可dataSet11却没有相应的做出变动?
    这是为什么?
    能说具体点吗?
      

  2.   

    ///就是说每当改变某个textbox的值,照理说dataSet11中那Row的对应字段值也变的(因为textbox是绑定的)
    你把绑定看的太厉害了,好像绑定一次就什么都是自动的了,不是这样的,你的这个想法需要实现的话,必须在修改textbox后,重新绑定一次,才会更新的;再有,你的数据表绑定是否正确啊,该不会你所需要绑定的字段没有被绑定吧!!
    还不行的话,贴出绑定的详细代码!!
      

  3.   

    这个问题我也遇到过,
    你只要在调用数据适配器的update方法前调用数据源的endedit方法即可,
    至于TEXTBOX绑定后不能直接通过修改到数据源中这一点我也不明白,
    你知道了要跟大家一起分享一下。
      

  4.   

    我在之前加了
    dataSet11.Tables["customer"].Rows[DataGrid1.CurrentCell.RowNumber].BeginEdit();
    然后保存时
    dataSet11.Tables["customer"].Rows[DataGrid1.CurrentCell.RowNumber].EndEdit();
    dataSet11.AcceptChanges();
    然后保存,发现触发了dataSet.HasChanges事件,但刚才在tab2中的刚改过的某个textbox字段的text值又变回了空白。并且改的东东实际并没有被保存。
    怎么回事???
      

  5.   

    补充说明:绑定的字段100%正确的。因为每当变动tabcontrol中tab1上datagrid1的ROW,tab2中各个textbox的值都自己变成当前ROW值。但只要变动也tab2中的字段,然后切回到tab1,再按toolsbar上的“保存”就能成功!
    如果只在tab1中按toolsbar上的“保存”就不能保存成功(虽然在textbox中的值是最新的)(以上现象是没有用beginedit,endedit状态下出现的,如用了,会出现上楼贴子中的情况)