将DataRow添加到DataTable中报错,该如何处理

将DataRow添加到DataTable中报错,该如何处理,第1张

将DataRow 添加到DataTable 中报错

for (int i = 0i Headdt.Rows.Counti++){

DataRow [] rows = Headdt.Select()

DataTable dt = new DataTable()

dt = rows[i].Table.Clone()

foreach (DataRow row in rows){

dt.Rows.Add(row)// 将DataRow 添加到DataTable 中

//报错 该行已经属于另一个表。}}

求解啊。。。

------解决方案--------------------------------------------------------

datarow 如果要添加到 datatable 必须和 Datatable 使用同一个 schama,否则只能用ImportRow

要获得同一架构的row 用:

------解决方案--------------------------------------------------------

你如果是为了复制数据,两行就搞定了C# code

DataTable dt = new DataTable()

dt=Headdt.Select().CopyToDataTable()

------解决方案--------------------------------------------------------

LZ 只需要改成这样就好了,测试过了。

foreach (DataRow row in rows){

dt.Rows.Add(row.ItemArray)}

------解决方案--------------------------------------------------------C# code

datatable dt=Headdt.clone //创建一个DataTable dt,字段结构复制自Headdt

dt.rows.add(Headdt.select( 找到这行记录的条件 )(0).itemarray) //在dt 中添加一行,

这行的值从Headdt 中查询出来,( 找到这行记录的条件 )这个部分可能类似于 Id=3

------解决方案--------------------------------------------------------

很明显,那个row 已经属于rows 了,所以你只要重新创建一个datarow 类型的变量,同时把

row 的值赋给这个新建变量,再利用add(新建变量)就行了

这种情况下可以使用table.ImportRow(Newrow)

两个表的数据结构需要一样。

C# code

DataTable dt1

DataTable dt2

DataRow row = dt1.Rows[X]

dt2.Rows.Add(row)

2008-12-04 01:35 推荐: 0 次

苯办法了。

C# code

DataRow row2 = dataTable2.NewRow()

for(int k = 0k <row1.Table.Columns.Count)

{

row2[k] = row1[k] // row1是dataTable1的一行

}

dataTable2.Rows.Add(row2)

2008-12-04 01:35 推荐: 0 次

C# code

DataTable dt = new DataTable()

dr=所要添加到dt的DataRow。

dt.Rows.Add(dr.ItemArray)

在表中列和行的添加和删除

本节主要介绍DataColumn对象和DataRow对象,通过它们来说明在表中列与行的添加和删除。它们均不能单独存在,而是作为DataTable集合的两个元素存在。下面通过代码进行说明。

DataTable dt = new DataTable("t1")DataColumn dc = new DataColumn()dc.DataType = System.Type.GetType("System.String")dc.ColumnName = "Name"dt.Columns.Add(dc)DataRow drdr= dt.NewRow()dr["Name"] = "weiyi"dt.Rows.Add(dr)dr = dt.NewRow()dr["Name"] = "lirong"dt.Rows.Add(dr)dt.Rows.RemoveAt(0)dt.Columns.RemoveAt(0)

以上代码主要实现为创建完毕的DataTable添加一个“Name”列,并为该列的前两行分别添加元素。

代码解释如下所述。

首先是创建DataTable对象。

DataTable dt = new DataTable("t1")

然后创建DataColumn对象,并设置列名和列的类型,接着将列添加到DataTable中,如下所示。

DataColumn dc = new DataColumn()//创建列对象dc.DataType = System.Type.GetType("System.String") //设置列的类型dc.ColumnName = "Name" //设置列名 dt.Columns.Add(dc) //将列添加到DataTable中

创建完列后,应该为列进行赋值,这时需要用到DataRow对象,如下所示。

DataRow dr = dt.NewRow()

这里NewRow()表示表的新行,然后分别添加了两个行元素,最后还应该将新添加的行添加到DataTable中,如下所示。

dr["Name"] = "weiyi"dt.Rows.Add(dr)dr = dt.NewRow()dr["Name"] = "lirong"dt.Rows.Add(dr)

行与列的删除和DataTable一样,同样支持三种方法,如下所示。

dt.Rows.Clear()//删除所有行dt.Rows.RemoveAt(0) //删除第一行 dt.Rows.Remove(row)//删除指定行dt.Columns.Clear() //删除所有列 dt.Columns.RemoveAt(0) //删除第一列dt.Columns.Remove(column) //删除指定列


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11487729.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存