【问题标题】:datarow variable assign to dataset's table newrowdatarow 变量分配给数据集的表 newrow
【发布时间】:2014-01-19 02:12:17
【问题描述】:

我正在尝试定义一个数据行来保存值,然后将其添加到数据集中 indgv:其中包含值的数据网格视图 dsdetails:一个数据集,其中包含一个名为 details 的表

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”未定义。

【问题讨论】:

    标签: vb.net visual-studio-2012 dataset datarow


    【解决方案1】:

    如果您只需要将行从一个表复制到另一个表,DataTable 类有一个您可能想要使用的 Copy 方法。它的工作原理是这样的:

    Dim dtCopy As New DataTable()
    dtCopy = dt.Copy()
    

    如果你有一个绑定到表格的datagridview控件,你也可以使用这个表单:

    Dim dtCopy As New DataTable()
    dtCopy = DirectCast(dataGridViewX1.DataSource, DataTable).Copy()
    

    Copy 方法将复制数据表结构和数据。 如果您只想复制没有数据的结构,您可以使用Clone 方法。

    【讨论】:

    • 感谢您的回复,该行中的数据是混合字段:一些来自数据网格,一些来自表单的控件。
    【解决方案2】:

    试试这个代码:

    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
    

    【讨论】:

      猜你喜欢
      • 2016-05-11
      • 2022-06-14
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      • 2015-01-31
      • 2021-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多