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

ljm0211發表於2012-06-28

    正確程式碼:
   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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章