[英]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.