如何删除动态创建的数据网格视图中的行 vb.net
how to delete rows in a dynamically created datagridview vb.net
我正在尝试删除将动态创建的 DataGridView
中的行,我使用了这段代码但它不起作用(dgv 不是...的成员)
数据网格视图创建如下:
If ComboBox1.Text = "Excel" Then
Static Dim cmd As String
Using fold As New OpenFileDialog
fold.Filter = "sheet files (*.xls)|*.xls|All files (*.*)|*.*"
fold.Title = "Select file"
If fold.ShowDialog() = Windows.Forms.DialogResult.OK Then
fold.RestoreDirectory = True
cmd = fold.FileName
End If
End Using
Try
Static Dim MyConnection As System.Data.OleDb.OleDbConnection
Dim Dataset As System.Data.DataSet
Static Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
Dim shlist As ArrayList = getExcelSheetsName(cmd)
MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & cmd & ";Extended Properties=Excel 8.0;")
For i As Long = 0 To shlist.Count() - 1
Dim myTabPage As New TabPage()
Dim dgv As DataGridView = New DataGridView()
myTabPage.Text = shlist(i) & (TabControl1.TabPages.Count + 1)
TabControl1.TabPages.Add(myTabPage)
myTabPage.Controls.Add(dgv)
dgv.Dock = DockStyle.Fill
dgv.AutoSizeColumnsModeDataGridViewAutoSizeColumnsMode.Fill
MyCommand = New System.Data.OleDb.OleDbDataAdapter("select * from [" & shlist(i) & "$]", MyConnection)
Dataset = New System.Data.DataSet
MyCommand.Fill(Dataset)
dgv.DataSource = Dataset.Tables(0)
MyConnection.Close()
Next
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
End If
删除按钮的代码是:
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
For Each row As DataGridViewRow In TabControl1.SelectedTab.datagridview.SelectedRows
DataGridView.Rows.Remove(row)
Next
End Sub
任何帮助将不胜感激...谢谢
当然你不能使用 TabControl1.SelectedTab.datagridview
因为 datagridview
不是 TabPage
的成员,相反你可以使用 Controls
集合找到网格 TabPage
这样:
Dim grid = DirectCast(Me.TabControl1.SelectedTab.Controls(0), DataGridView)
If (grid IsNot Nothing) Then
For Each dr As DataGridViewRow In grid.SelectedRows
If (Not dr.IsNewRow) Then
grid.Rows.Remove(dr)
End If
Next
End If
我正在尝试删除将动态创建的 DataGridView
中的行,我使用了这段代码但它不起作用(dgv 不是...的成员)
数据网格视图创建如下:
If ComboBox1.Text = "Excel" Then
Static Dim cmd As String
Using fold As New OpenFileDialog
fold.Filter = "sheet files (*.xls)|*.xls|All files (*.*)|*.*"
fold.Title = "Select file"
If fold.ShowDialog() = Windows.Forms.DialogResult.OK Then
fold.RestoreDirectory = True
cmd = fold.FileName
End If
End Using
Try
Static Dim MyConnection As System.Data.OleDb.OleDbConnection
Dim Dataset As System.Data.DataSet
Static Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
Dim shlist As ArrayList = getExcelSheetsName(cmd)
MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & cmd & ";Extended Properties=Excel 8.0;")
For i As Long = 0 To shlist.Count() - 1
Dim myTabPage As New TabPage()
Dim dgv As DataGridView = New DataGridView()
myTabPage.Text = shlist(i) & (TabControl1.TabPages.Count + 1)
TabControl1.TabPages.Add(myTabPage)
myTabPage.Controls.Add(dgv)
dgv.Dock = DockStyle.Fill
dgv.AutoSizeColumnsModeDataGridViewAutoSizeColumnsMode.Fill
MyCommand = New System.Data.OleDb.OleDbDataAdapter("select * from [" & shlist(i) & "$]", MyConnection)
Dataset = New System.Data.DataSet
MyCommand.Fill(Dataset)
dgv.DataSource = Dataset.Tables(0)
MyConnection.Close()
Next
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
End If
删除按钮的代码是:
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
For Each row As DataGridViewRow In TabControl1.SelectedTab.datagridview.SelectedRows
DataGridView.Rows.Remove(row)
Next
End Sub
任何帮助将不胜感激...谢谢
当然你不能使用 TabControl1.SelectedTab.datagridview
因为 datagridview
不是 TabPage
的成员,相反你可以使用 Controls
集合找到网格 TabPage
这样:
Dim grid = DirectCast(Me.TabControl1.SelectedTab.Controls(0), DataGridView)
If (grid IsNot Nothing) Then
For Each dr As DataGridViewRow In grid.SelectedRows
If (Not dr.IsNewRow) Then
grid.Rows.Remove(dr)
End If
Next
End If