Vb.net 数据行变量分配给数据集';s表纽罗
我试图定义一个数据行来保存值,然后将其添加到数据集中 indgv:datagridview,其中包含值 dsdetails:具有名为details的表的数据集Vb.net 数据行变量分配给数据集';s表纽罗,vb.net,visual-studio-2012,dataset,datarow,Vb.net,Visual Studio 2012,Dataset,Datarow,我试图定义一个数据行来保存值,然后将其添加到数据集中 indgv:datagridview,其中包含值 dsdetails:具有名为details的表的数据集 If indgv.Rows.Count > 0 Then Dim dr As DataRow dr = dsdetails.Tables("details").NewRow For Each row As DataGridViewRow In indgv.Row
If indgv.Rows.Count > 0 Then
Dim dr As DataRow
dr = dsdetails.Tables("details").NewRow
For Each row As DataGridViewRow In indgv.Rows
dr("mat") = row.Cells("icode").Value
dr("dateoftrans") = Me.DateTimePicker1.Value
dr("numoftrans") = transnum.Text
dr("type") = 1
dr("doc") = doctyp.SelectedValue
dr("amount") = row.Cells("iamo").Value
dsdetails.Tables("details").Rows.Add(dr)
Next
adpdetails.Update(dsdetails, "details")
End If
运行此命令会导致以下错误
对象引用未设置为对象的实例
如何用“New”重新表述声明以避免问题
顺便说一句:当使用new时,如下所示
Dim dr As New DataRow = dsdetails.Tables("details").NewRow
它显示了设计时间误差
未定义类型“dsdetails.Tables”
请尝试以下代码:
If indgv.Rows.Count > 0 Then
Dim tbl As DataTable = dsdetails.Tables("details")
Dim dr As DataRow
For Each row As DataGridViewRow In indgv.Rows
dr = tbl.NewRow 'Create a new row inside the loop!
dr("mat") = row.Cells("icode").Value
dr("dateoftrans") = Me.DateTimePicker1.Value
dr("numoftrans") = transnum.Text
dr("type") = 1
dr("doc") = doctyp.SelectedValue
dr("amount") = row.Cells("iamo").Value
tbl.Rows.Add(dr)
Next
adpdetails.Update(tbl)
End If
若您只需要将行从一个表复制到另一个表,那个么DataTable类有一个您可能想要使用的复制方法。它的工作原理如下:
Dim dtCopy As New DataTable()
dtCopy = dt.Copy()
如果将datagridview控件绑定到表,还可以使用以下表单:
Dim dtCopy As New DataTable()
dtCopy = DirectCast(dataGridViewX1.DataSource, DataTable).Copy()
该方法将复制datatable结构和数据。
如果只想复制结构,而不复制可以使用方法的数据。感谢您的回答,行中的数据是混合字段:一些来自数据网格,一些来自表单控件。