显示并修改一张单表,有主键。窗体上用一些textedit 连接到该表的字段,进行显示或修改。
修改了内容后,如果直接点保存,即发起sqlDataAdapter1.Update, 更新无效。测GetChanges().Rows.Count 为null。
上步之后,移动记录,即上一条或下一条等操作后,再update,更新有效。GetChanges().Rows.Count为1.
另,修改一个text后,将焦点移动其它text,再测GetChanges().Rows.Count,仍为null。
难道一条记录修改好后,必须移动记录集,才能将变动保存入dateset? 想不通,请高手赐教。

解决方案 »

  1.   

    那个导航控件相当不好用,从当年vb到现在都是的
    你试试在update前用acceptchanges
      

  2.   

    AcceotChange是改变行状态的,不可用,不如自己写个控件吧,我没用过这个东东
      

  3.   

    数据修改前调用
    dataGrid1.BeginEdit();
    数据修改后调用
    dataGrid1.EndEdit();
      

  4.   

    如果是调用了BindingManagerBase类的话
    在数据修改完后 也要调用_bind.EndCurrentEdit();
      

  5.   

    to:liujia_0421(SnowLover) 
    问题并不是在导航控件上。text内容编辑后,该TEXT失去焦点后,dataset并没有响应到有内容做过修改。这个是主要问题。to:jiatong1981(末日之痕) 
    这和Grid并没有关系。 TextEdit等---BandingSource---DataSet---sqlDataAdapter--sqlServer。另外,编辑是随机性的,并不能控制BeginEdit的触发,而且根据我的理解,Begin/EndEdit(),并不能解决该问题。to:dong8010(董) 
    GetChange()的前提是dataset获取了变更,如果GetChanges().Rows.Count is NUll的话,并不能返回任何东西。
    郁闷中。
      

  6.   

    text失去焦点时acceptchanges一下试试。