请问高手们如何同时删除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 , 数据库(包含打印,安装,报表)