【发布时间】:2019-01-22 16:22:53
【问题描述】:
我目前正在尝试将选定的行从一个 DataGridView 复制到另一个。
我正在尝试捕获 CheckBox 的值,如果选中,则将整行复制到另一个 DataGridView。
例如,添加到购物车然后查看购物车。我参考了以下帖子:
Copy selected datagridrow to new datagridview on different form
但它似乎没有帮助。
我尝试过使用如下所示的For 循环,但我不完全确定该怎么做。
Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
Dim dt As New DataTable()
AppendColumnsToDGV2()
For Each row As DataGridViewRow In DataGridView1.Rows
If row.Cells("SelectColumn").Value = True Then
Dim NewRow As DataRow
For i As Integer = 0 To row.Cells.Count - 1
NewRow(i) = row.Cells(i).Value
DataGridView2.Rows.Add(NewRow)
Next
End If
Next
AppendColumnsToDGV2:
Private Sub AppendColumnsToDGV2()
Dim dt As New DataTable
'dt.Columns.Add(CreateDGVCheckBoxCol())
'dt.Columns.Add(CreateImageColumn())
dt.Columns.Add(DataGridView1.Columns(3).HeaderText)
dt.Columns.Add(DataGridView1.Columns(4).HeaderText)
dt.Columns.Add(DataGridView1.Columns(5).HeaderText)
dt.Columns.Add(DataGridView1.Columns(6).HeaderText)
DataGridView2.DataSource = dt
End Sub
我在这里做的没有用,我不知道该怎么做。
任何帮助将不胜感激,谢谢。
每当我运行此代码时,我都会收到错误消息:
System.NullReferenceException:对象引用未设置为实例 一个对象
我不知道如何解决它。
这是 DataGridView 的样子:
【问题讨论】:
-
"DataGridView2.Rows.Add(NewRow)" 应该跟在第一个 Next 语句之后。您是否遇到任何错误,或者只是没有看到任何事情发生?
-
另外,newRow 应该由 DataTable 构造。例如。
Dim newRow = dt.NewRow. -
@JerryM 我收到错误
System.NullReferenceException: 'Object reference not set to an instance of an object.'。当一个值显然没有被分配给它时,我正在使用数据行。 -
您应该将 dt 传递给 AppendColumnsToDGV2 例程。示例 `Private Sub AppendColumnsToDGV2 (dt As DataTable)'。您目前正在使用 2 个单独的数据表。
-
您还在使用previous question 中显示的 JSON 生成的类吗?如果是这样,解决方案真的很简单。
标签: .net vb.net image winforms datagridview