点击datagrid的每行纪录,在文本中显示当前内容.
开始在datagrid_click中编写
text1.text=datagrid1.Columns("纪录")
出现的问题是点击datagrid1中的纪录和text1显示的纪录总是不相符合。
后来又给在rowcolchange 事件中编写,但是当滚动条拖动后纪录又不匹配了。
到底是什么问题?是datagrid的bug吗?

解决方案 »

  1.   

    应该写在在Adodc的MoveComplete事件中Private Sub Adodc1_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
    For i = 0 To Adodc1.Recordset.Fields.Count - 1
    Print Adodc1.Recordset.Fields(i)
    Next
    End Sub用adodb同理。
      

  2.   

    我没有加入adodc1,直接用recordset与datagrid.datasourse进行绑定的。这样的情况应该如处理?是必须用adobc进行捆绑,才可行吗?
      

  3.   

    如果是使用adodb,那么可以让一个rs能响应事件来达到目的例子:Private Conn As New ADODB.Connection
    Private WithEvents Rs As ADODB.RecordsetPrivate Sub Form_Load()
    Dim strConn As String
    Set Rs = New ADODB.Recordset
        strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\销售库存1\data\sale&stock.mdb;Persist Security Info=False"
        Conn.CursorLocation = adUseClient
        Conn.Open strConn
        
        If Rs.State <> adStateClosed Then Rs.Close
        Rs.Open "Select *from [order]", Conn, adOpenStatic, adLockOptimistic
        
        Set Me.DataGrid1.DataSource = Rs
    End SubPrivate Sub Rs_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
    For i = 0 To Rs.Fields.Count - 1
    Print Rs.Fields(i)
    Next
    End Sub留意WithEvents的作用,它让rs能响应事件。