如何为DataTable添加新的DataRow

如何为DataTable添加新的DataRow,第1张

一、DataTable.Rows.Add(DataRow.ItemArray)

二、DataTable.ImportRow(DataRow)

三、设置DataTable的tablename,然后.Rows.Add

我 们经常需要向DataTable中添加一行数据,大多数的情况下都是把一些从UI的控件和程序的变量中收集的数据添加到DataTable中。如以下的语 句把供应商代码和名称添加到DataTable中:

DataTable dtProvider = new DataTable()

DataRow drRow = dtProvider.NewRow()

drRow[0] = txtProviderCode.Text.Trim()

drRow[1] = txtProviderName.Text.Trim()

dtProvider.Rows.Add(drRow)

大多数的情况下这几行语句是完全可以满足要求的。但 是如果想把另一个同样结构的DataTable的某一行添加到这个dtProvider中,就不能简单的添加了。否则会提示一个错误“This row belongs to another table.”。这个时候我们必须定义另一个DataRow,把源DataRow的数据赋到目的DataRow中,再Add进DataTable中就可以 了。如下所示:

DataTable dtProvider = new DataTable()

DataRow drTarget = dtProvider.NewRow()

drTarget.ItemArry = drSource.ItemArry

// 注意:这里的drSource是另一个相同结构的DataTable中的一行。

dtProvider.Rows.Add(drTarget)

我们经常需要向DataTable中添加一行数据, 大多数的情况下都是把一些从UI的控件和程序的变量中收集的数据添加到DataTable中。如以下的语句把供应商代码和名称添加到DataTable 中:

DataTable dtProvider = new DataTable()

DataRow drRow = dtProvider.NewRow()

drRow[0] = txtProviderCode.Text.Trim()

drRow[1] = txtProviderName.Text.Trim()

dtProvider.Rows.Add(drRow)

大多数的情况下这几行语句是完全可以满足要求的。但 是如果想把另一个同样结构的DataTable的某一行添加到这个dtProvider中,就不能简单的添加了。否则会提示一个错误“This row belongs to another table.”。这个时候我们必须定义另一个DataRow,把源DataRow的数据赋到目的DataRow中,再Add进DataTable中就可以 了。如下所示:

DataTable dtProvider = new DataTable()

DataRow drTarget = dtProvider.NewRow()

drTarget.ItemArry = drSource.ItemArry

// 注意:这里的drSource是另一个相同结构的DataTable中的一行。

dtProvider.Rows.Add(drTarget)

将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)


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

原文地址:https://54852.com/bake/7895940.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存