当前位置:编程学习 > VB >>

请问高手们如何同时删除datagrid的多行数据

我在使用datagrid时用了DataGrid1.CurrentRowIndex来获取索引,但只能是每次删除一行数据,
 '删除一行数据,代码如下,那如何同时删除多行数据?请各位高手指点以下,在下十分感激!
        Dim i As Integer = DataGrid1.CurrentRowIndex '定义I是datagrid的被选中的一行
        If i >= 0 Then
            '当I存在时,定义V是DATAVIEW,利用DATAVIEW的DELETE方法删除一行数据


            If MsgBox("是否删除选定项?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
                Dim v As DataView
                v = New DataView(DataSet12.Tables("sh1"))


                DataGrid1.DataSource = v



                v.Delete(i)
                Try


                    OleDbDataAdapter1.Update(DataSet12, "sh1")

                    DataSet12.Clear()

                    OleDbDataAdapter1.Fill(DataSet12, "sh1")



                Catch


                End Try

                OleDbConnection1.Close()
            End If

        End If

--------------------编程问答-------------------- 标识上删除标志,然后用sql干? --------------------编程问答-------------------- 你是要删除选定的多行记录吗?

Sub DeleteRows()
    Dim varBmk As Variant
    For Each varBmk In DataGrid1.SelBookmarks
        ADODC1.Recordset.Bookmark = varBmk
        ADODC1.Recordset.Delete
        ADODC1.Refresh
    Next
End Sub
--------------------编程问答-------------------- 同意楼上的,selbookmarks会记录下选择的多行数据的索引,再利用adodc或dataview删除行 --------------------编程问答-------------------- 2F 使用 SelBookmarks 思路完全正确, 但这样子的写法,DataGrid的内容不会随时同步刷新的,

还有一个最大的问题就是假设客户要删记录时不是从上到下 123....456 而是跳着删98126534问题马上就来了,

以前写过这个删除代码也是搞了好久, 楼主如还没解决,我找一下源代码再发上来,解决了就算了.

--------------------编程问答-------------------- '添加 Command1

Option Explicit
Dim appdisk$, trecord%, i&, j&, k&, t&, Tmprnd&(), TselRec&
Private Sub Form_Load()
   appdisk = IIf(Right(App.Path, 1) = "\", App.Path, App.Path & "\")
   Command1.Caption = "删 除"
   Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & appdisk & "bwscale.mdb;Persist Security Info=False"
   Adodc1.RecordSource = "select * from bwmain"  'where inday =" & Chr(35) & Text2.Text & Chr(35)
   Set DataGrid1.DataSource = Adodc1
   trecord = Adodc1.Recordset.RecordCount
   If trecord > 0 Then Adodc1.Recordset.MoveFirst
End Sub

Private Sub Command1_Click()
   TselRec = DataGrid1.SelBookmarks.Count
   ReDim Preserve Tmprnd&(TselRec)
   For i = 0 To TselRec - 1
      Tmprnd&(i) = DataGrid1.SelBookmarks.Item(i)
   Next i
   If TselRec > 1 Then
      '*********** 排序数组变量
      For i = 0 To TselRec - 1
         k = i
         For j = i + 1 To TselRec - 1
            If Tmprnd(k) < Tmprnd(j) Then k = j
         Next j
         t = Tmprnd(i): Tmprnd(i) = Tmprnd(k): Tmprnd(k) = t
      Next i
   End If
   For i = 0 To TselRec - 1
      If Adodc1.Recordset.RecordCount <= 0 Then Exit For
      Adodc1.Recordset.MoveFirst
      If Tmprnd(i) - 1 > 0 Then Adodc1.Recordset.Move Tmprnd(i) - 1
      Adodc1.Recordset.Delete
   Next i
   If Adodc1.Recordset.RecordCount > 0 Then Adodc1.Recordset.MoveFirst
   Set DataGrid1.DataSource = Nothing
   Adodc1.Refresh
   Set DataGrid1.DataSource = Adodc1
End Sub

补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,