繁体   English   中英

将行从一个数据表复制到另一数据表无显示

[英]Copying Rows from One DataTable to another Displays Nothing

我正在尝试将行从一个DataTable复制到另一个,但仅复制数据尚未保存到数据库表的行。

SQL端工作正常,返回正确的列数,但是,当我将找到的行添加到第二个DataTable并将其设置为网格的DataSource ,尽管有由于行选择器可见,因此已添加的行。

我在做什么错,为什么不复制数据呢?

lftable = New DataTable

Try
  For Each dc As DataColumn In lineTable.Columns
    lftable.Columns.Add()
  Next

  Dim ds As New DataSet

  For Each row As DataRow In lineTable.Rows
     Dim da As New OleDbDataAdapter("SELECT * FROM [Order_Freight] WHERE [Order_Number] = ? AND [Product_Code] <> ?", con)
     da.SelectCommand.Parameters.Add("@num", OleDbType.Integer).Value = orderNum
     da.SelectCommand.Parameters.Add("@prod", OleDbType.VarChar).Value = row.Item("Product_Code")
     da.Fill(ds)

     For Each dr As DataRow In ds.Tables(0).Rows
        Dim nRow = lftable.Rows.Add()
        nRow.ItemArray = dr.ItemArray()
     Next
 Next

 ugProducts.DataSource = lfTable

为网格分配DataSource后的屏幕截图

在此处输入图片说明

正确填充列:

For Each dc As DataColumn In lineTable.Columns
    lftable.Columns.Add(new DataColumn(dc.ColumnName, dc.DataType)); 
Next

您可以使用Row.Add函数的重载,该函数允许您直接提供ItemArray

For Each dr As DataRow In ds.Tables(0).Rows
      lftable.Rows.Add(dr.ItemArray)
      'nRow.ItemArray = dr.ItemArray() <-- remove
Next

代替此代码:

   ' For Each dc As DataColumn In lineTable.Columns
      '  lftable.Columns.Add()   >
        '  lftable.Columns.Add(dc) 
     ' Next

使用DataTable.Clone()仅将lineTable中的列复制到lftable

lftable = lineTable.Clone();

接着

  For Each dr As DataRow In ds.Tables(0).Rows
         lftable.Rows.Add( dr.ItemArray)
     Next

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM