将行从一个DataTable复制到另一个DataTable不显示任何内容

时间:2017-02-01 09:53:45

标签: arrays vb.net datatable ultragrid

我尝试将行从一个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

为其分配 if(Array.get(a, i)==Array.get(a, j))

后的网格屏幕截图

enter image description here

2 个答案:

答案 0 :(得分:1)

正确填写列:

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

答案 1 :(得分:0)

而不是这段代码:

   ' 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