大家好!关于获取VB datagrid 单元格的值的问题,请教如下:For i = 0 To datagrid1.ApproxCount - 1
   datagrid1.Row = i
   datagrid1.Col = 2            '比如我想取第二列的值
   batchNo = datagrid1.Text
Next现在这种方法取值有一个问题,比如我的datagrid只能显示10行记录,
如果记录超过10行,就会有滚动条,但是当我取到10行以后的记录,比如
第12行,就会提示“无效行号”的错误!请问这种情况如何解决?
是否有其他更方便的取值方法?

解决方案 »

  1.   

    不推荐使用ApproxCount属性,ApproxCount只返回在网格中的行号的近似值。用于校准垂直滚动条的近似行数。一般来说,   ApproxCount   属性用于改善垂直滚动条的精确性。   
      要得到datagrid控件的总行数,建议直接在记录集中得到:   
      1.adodc1.recordset.recordcount   
      2.rs.recordcount   
      

  2.   

    谢谢楼上的高手现在的问题是当我的i>10时,运行datagrid1.Row = i ,就会出现“无效行号”,从而就取不到当前行的值就高手指教!
      

  3.   

    DataGrid 的行和列号,指的是当前可见的行和列号。 你还是改用 MSFlexGrid 吧。DataGrid 不是这样用的。或者用adodc来访问数据
      

  4.   

    这个问题1楼的高手已经给出了中肯的建议,确实datagrid控件不好控制,建议改用MSHFlexGrid或MSFlexGrid,如果非要用datagrid,改用下面的代码
    dim batchNo() as string  '定义为数组
    redim batchNo(Adodc1.Recordset.RecordCount - 1)
    Adodc1.Recordset.MoveFirst
    For i = 0 To Adodc1.Recordset.RecordCount - 1
      batchNo(i) = Adodc1.Recordset.Fields("账号").Value
      Adodc1.Recordset.MoveNext
    Next