如果我有一个DataTable并且想要创建一个新行,我首先调用DataTable.NewRow()
,它返回一个DataRow。然后该行具有表的模式,我可以设置行中每个字段的值。此时表格是否“知道”Row,或者仅在我致电DataTable.Rows.Add(DataRow row)
后才会发生?
如果我再次调用DataTable.Rows.Add()
,那么在数据表中创建的重复行是否有重复值?
我问的原因是我正在尝试编写一个递归函数,它将迭代树结构并用值填充DataTable。因此,我有这样的情况:为每个子项创建的行将具有具有所有相同值的列,因为它们来自父项。
所以我的想法是将带有父母信息的DataRow传递给每个孩子。孩子将添加其信息,然后将行添加到表中。但我想知道是否需要为每个孩子调用DataTable.NewRow()
,或者如果我多次添加同一行,将自动创建新行。
答案 0 :(得分:15)
不,但是复制一行很容易,你可以得到你想要的东西(假设现有的行在名为existingRow的变量中):
var newRow = dataTable.NewRow();
newRow.ItemArray = existingRow.ItemArray;
dataTable.Rows.Add(newRow);
答案 1 :(得分:1)
是的,老问题。但是迈克尔的答案确实有用。我需要将多个重复行添加到调度应用程序的DataTable
中。使用dt.Rows.Add(_Users)
时出现错误:
该行已经属于该表
但是使用此功能,我可以循环浏览并根据需要保留任意数量的职位空缺,其中“长度”是应聘职位的空缺数量:
int Length = int.Parse(TextBox6.Text.Trim());
for (int i = 0; i < Length; i++)
{
Users.Rows.Add("9999", "Open");
}
在Google上搜索此操作很糟糕,因为大多数人都想删除DataTable
中的重复行,而不是添加DataTable
中的重复行。
答案 2 :(得分:0)
不,它会生成System.ArgumentException类型的异常。
答案 3 :(得分:-1)
我建议您将数据放入数组中,然后将数据添加到数据表中 e.g。
yourDataTable.Rows.Add(data[0]........);
newdatarow
将生成异常错误