将行从一个数据表复制到另一个数据表不显示任何内容
Copying Rows from One DataTable to another Displays Nothing
我正在尝试将行从一个 DataTable
复制到另一个,但只复制数据尚未保存到数据库的行 table。
这方面的 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
我正在尝试将行从一个 DataTable
复制到另一个,但只复制数据尚未保存到数据库的行 table。
这方面的 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