ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ssdbgrid中在AfterColUpdate事件中求某列的和

ssdbgrid中在AfterColUpdate事件中求某列的和

原创 Linux操作系统 作者:ljm0211 时间:2012-06-28 10:13:36 0 删除 编辑

    正确代码:
   For intI = 0 To grdtest.Row - 1
        bkMark = grdtest.AddItemBookmark(intI)
        intSum = intSum + CInt(grdtest.Columns("test").CellValue(bkMark))
    Next intI
   
    intSum = intSum + CInt(grdtest.Columns("test").Value)
   
    For intI = (grdtest.Row + 1) To (grdtest.Rows - 1)
        bkMark = grdtest.AddItemBookmark(intI)
        intSum = intSum + CInt(grdtest.Columns("test").CellValue(bkMark))
    Next intI
    MsgBox "The Sum:" & intSum

错误代码:
    For intI = 0 To (grdtest.Rows - 1)
        bkMark = grdtest.AddItemBookmark(intI)
        intSum = intSum + CInt(grdtest.Columns("test").CellValue(bkMark))
     Next intI
    MsgBox "The Sum:" & intSum

      错误代码中由于在AfterColUpdate事件中通过绝对行数用AdditemBookmark方法得到bookmark,再通过 grdtest.Columns("test").CellValue(bkMark)取得的被修改行的值不是修改过的值,而是修改之前的值。
      在正确的代码中,将修改行单独用grdtest.Columns("test").Value取得修改后的值,然后将其他行的值用For循环的绝对行数—>BookMark->Value的方法取得,然后求和,可以达到求修改后的和的目的。

PS:在AfterColUpdate中,对grdtest.Bookmark赋值不会起作用,对bookmark的movefirst等move操作也不会起作用。在这个事件中bookmark不会被移动。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11411056/viewspace-733999/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-05-14

  • 博文量
    272
  • 访问量
    436848