在flexgrid控件中有多行记录,该控件支持多行选择,当用户选择了多行记录的时候,点击command1,实现选中的多行记录被删除,请问该如何实现呢?谢谢!

解决方案 »

  1.   

    首先把需要删除的行记录在一个数组里。然后设置一个变量offset,然后依次删除那个数组中元素所对应的行加上offset的值,即假设删除的行数位row,那么实际的行数就是row-offset,注意每次删除一条记录以后offset的值要加1。
      

  2.   

    可以用集合,flexgrid内容放在集合里,删除集合记录,刷新就可以了,我都是这么处理的
      

  3.   

    首先在flexgrid控件中一定要有一列是存放ID的,就是一条记录的唯一标识.你可以隐藏起来.然后当用户点击flexgrid控件的时候,你自己将这条记录的背景颜色改变.
    在删除的时候,你就可以根据那个ID跟是否改变了背景颜色来删除.
      

  4.   

    给你一个删除的函数。
    '删除选定行
    Private Sub btnDel_Click(msfData As Object)
    Dim lngStart As Long
    Dim lngEnd As Long
    Dim lngRow As Long
    Dim lngCol As Long
    Dim lngRet As Long
    Dim i As Long
        lngRow = msfData.Row
        lngCol = msfData.Col
        
        If msfData.Row > msfData.RowSel Then
           lngStart = msfData.RowSel
           lngEnd = msfData.Row
           lngRow = msfData.RowSel
        ElseIf msfData.Row = msfData.RowSel Then
           lngStart = msfData.Row
           lngEnd = msfData.RowSel
        Else
           lngStart = msfData.Row
           lngEnd = msfData.RowSel
        End If
        For i = lngStart To lngEnd
           If lngStart < msfData.Rows - 1 Then
              msfData.RemoveItem lngStart
              mblnChanged = True
           End If
        Next i
        msfData.RowSel = msfData.Row
        msfData.ColSel = msfData.Col
        msfData.Row = lngRow
        msfData.Col = lngCol
    End Sub
      

  5.   

    上面的 lngRet 变量你可以去掉,函数名你自己改改把,这是从原来写的程序中改了一下给你的
      

  6.   

    mblnChanged也可以去掉。再发一次给你吧。调用的时候把需要删除的flexgrid控件的名称传入就行了。
    Private Sub RemoveRows(msfData As Object)
    Dim lngStart As Long
    Dim lngEnd As Long
    Dim lngRow As Long
    Dim lngCol As Long
    Dim lngRet As Long
    Dim i As Long
        lngRow = msfData.Row
        lngCol = msfData.Col
        
        If msfData.Row > msfData.RowSel Then
           lngStart = msfData.RowSel
           lngEnd = msfData.Row
           lngRow = msfData.RowSel
        ElseIf msfData.Row = msfData.RowSel Then
           lngStart = msfData.Row
           lngEnd = msfData.RowSel
        Else
           lngStart = msfData.Row
           lngEnd = msfData.RowSel
        End If
        For i = lngStart To lngEnd
           If lngStart < msfData.Rows - 1 Then
              msfData.RemoveItem lngStart
           End If
        Next i
        msfData.RowSel = msfData.Row
        msfData.ColSel = msfData.Col
        msfData.Row = lngRow
        msfData.Col = lngCol
    End Sub
      

  7.   

    \\如何获得某一行记录的id\\这个ID是你数据中的一个字段呀,你要有一个字段来标识这条记录才可以根据条件删除的.