一个DatagridView控件数据源为DataTable
当在datagridview控件中修改这一行单元格值后出现无法保存的现象!经过研究发现,如果修改后能将焦点移到其他行则可以保存
请问这个问题如何解决?

解决方案 »

  1.   

    调用EndEdit()方法可以强制更新数据。
      

  2.   

    谢谢楼上的,有用ENDEDIT(),更新代码如下:        Me.BindingContext(DSMAIN).EndCurrentEdit()
            cbuilder.GetUpdateCommand()
            da_tmp.Update(DSMAIN, DSMAIN_NAME)        DSMAIN.AcceptChanges()' 注:
    ' DSMAIN            是DATASET
    ' DSMAIN            是表的名字
    ' cbuilder          是SqlCommandBuilder
    ' da_tmp            是SqlDataAdapter
    ' 只要焦点移到其它行,能保存功能,没有问题,否则不能保存.
      

  3.   

    是Datagridview的EndEdit()方法。你确定你调用的是这个吗?
      

  4.   

           Me.BindingContext(DSMAIN).EndCurrentEdit()
            Me.GRDMAIN.EndEdit()
            cbuilder.GetUpdateCommand()
            da_tmp.Update(DSMAIN, DSMAIN_NAME)        DSMAIN.AcceptChanges()' (我先前的代码是从文本框中录入数据的,刚才试着从网格中录入数据)' 加了,还是这样
    ' 只要焦点移到其它行,能保存成功,没有问题,否则不能保存.    <--还是有这个问题.
      

  5.   

    我在FORM_LOAD中将网格与数据源绑定,更新代码是在一个BTN_SAVE的按钮中.
      

  6.   


    对头,这位兄弟是对的,在DATAGRIDVIEW中录入数据的话,在ENDEdit()前先Refresh()       Me.GRDMAIN.Refresh()
           Me.GRDMAIN.EndEdit()这样就没问题了,现在最后一个问题是,我从绑定的文本框中录入数据,还需要一个什么动作?
      

  7.   

           Me.BindingContext(BDSMAIN).EndCurrentEdit() 
            Me.GRDMAIN.EndEdit() 
            cbuilder.GetUpdateCommand() 
            da_tmp.Update(DSMAIN, DSMAIN_NAME)         DSMAIN.AcceptChanges() ' 数据库中有非自增列的主键,无非空值的列.
    ' 但在第二次更新的时候会出现错误提示:
    "违反并发性: UpdateCommand 影响了预期 1 条记录中的 0 条."