谁能解释一下在MSHFlexGrid1控件中,当初始化为空时,在程序运行过程中,添加数据时,
比如:
set MSHFlexGrid1.datasource=rs                'RS为数据记录集
显示后,选择起来不方便,每次点击第二行时,实际是第一行。
为什么会这样,怎么解决。

解决方案 »

  1.   

    先mshflexgrid1.clear
    在set mshflexgrid1.datasource=rs
      

  2.   

    Dim dbAdo As New ADODB.Connection
        Dim recRs As New ADODB.Recordset
        Dim strSql As String
        Dim strCon As String    strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\db1.mdb;Persist Security Info=False"
        dbAdo.CursorLocation = adUseClient
        dbAdo.CommandTimeout = 15
        dbAdo.ConnectionString = strCon
        dbAdo.Open
            strSql = "Select * From 表1"
        recRs.Open strSql, dbAdo, adOpenDynamic, adLockReadOnly
        If recRs.RecordCount > 0 Then
            MSHFlexGrid1.Rows = 2
            '需要加列标题程序
        Else
            Set MSHFlexGrid1.DataSource = recRs
        End If
      

  3.   

    这个问题我也遇到过,把mshflxgrid clear一下,重新写入数据应该没问题了
      

  4.   

    to lisong770818(懒人) ( ) ,这样没用。 cuizm(射天狼)的可以。但总觉得这样自己添加,很繁。
      

  5.   

    有可能是你的窗体初始焦点在MSHFlexGrid1控件上。
      

  6.   

    MSHFlexGrid数据显示最好用动态连接绑定,那样显示和加载速度比较快,lisong770818(懒人) 的方法应该可行。
      

  7.   

    对不起,我程序中有一句写错了,就是if语句中>改成=,望见谅!
        Dim dbAdo As New ADODB.Connection
        Dim recRs As New ADODB.Recordset
        Dim strSql As String
        Dim strCon As String    strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\db1.mdb;Persist Security Info=False"
        dbAdo.CursorLocation = adUseClient
        dbAdo.CommandTimeout = 15
        dbAdo.ConnectionString = strCon
        dbAdo.Open
        
        
        strSql = "Select * From 表1"
        recRs.Open strSql, dbAdo, adOpenDynamic, adLockReadOnly
        If recRs.RecordCount = 0 Then
            MSHFlexGrid1.Rows = 2
            '需要加列标题程序
        Else
            Set MSHFlexGrid1.DataSource = recRs
        End If