我在DataGrid中编辑了一个单元的内容后,非得点击其他的单元,所编辑单元的内容才会被确认,如果我直接点击了别的控件(比如保存按钮)所编辑单元的内容会复原。
我跟踪了DataGrid的事件,发现点击别的控件没有触发BeforeColUpdate 与 AfterColUpdate事件。
请问如何解决?谢了!

解决方案 »

  1.   

    Private Sub DataGrid1_Validate(Cancel As Boolean)
            DataGrid1_AfterColEdit DataGrid1(Index).Col
    End Sub
      

  2.   

    Private Sub DataGrid1_Validate(Cancel As Boolean)
            DataGrid1_AfterColEdit DataGrid1.Col
    End Sub
      

  3.   

    DataGrid1_AfterColEdit DataGrid1.Col事件中应该写些什么呀?如果没有这个事件函数,程序运行时会报错呀!
      

  4.   

    我记得你用于绑定的记录集移动一下也是可以做到的,如rs.movefirst
      

  5.   

    这个不太好处理啊,我用的是msfgrid,有同样的问题,也是找了好长时间,没有找到最好的办法,不过找到最笨的办法到是有一个,呵呵
    是:写一个函数,在点击了别的控件时,先进行将数处理放到grid中,
      

  6.   


    Private Sub DataGrid1_AfterColEdit(ByVal ColIndex As Integer)
            set datagrid1.datasource=rs
    End Sub
      

  7.   

    知道原因了:我使用的是Adodc作为数据源,可能Adodc速度慢了,在Update之后立即使用Refresh,此时数据库的数据还为更新,我在Update之后使用了Sleep 500,KO!
      

  8.   

    对了在Update之前还得加上一句:DataGrid.EditActive=False