我在开发一个C#项目中,有个需求就是将一个表中的一行数据,整条赋值到另一个表中,这时,会报一个System.ArgumentException:“该行已经属于另一个表。”的错误。从其他地方找到了个方法,就是在赋值的那条数据后,加上个方法:ItemArray。
ItemArray:通过数组获取或设置此行的所有值;
具体问题代码展示
// 获取数据
Hashtable ht = new Hashtable(7);
DataSet ds = PlateManager.GetInstance().GetList(ht);
// 空表格,符合条件则存入该表格
Hashtable ht1 = new Hashtable(7);
ht1.Add("DesignNo", -1);
DataSet ds1 = PlateManager.GetInstance().GetList(ht1).
// 判断条件
if (radlCountdown.Text == "全部")
{
ds1 = ds;
}
else
{
if (radlCountdown.Text == "已交版")
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (ds.Tables[0].Rows[i]["Countdown"].ToString() == "已交版")
{
// 此行将报错:System.ArgumentException:“该行已经属于另一个表。”
ds1.Tables[0].Rows.Add(ds.Tables[0].Rows[i]);
}
}
}
}
解决方法展示
// 获取数据
Hashtable ht = new Hashtable(7);
DataSet ds = PlateManager.GetInstance().GetList(ht);
// 空表格,符合条件则存入该表格
Hashtable ht1 = new Hashtable(7);
ht1.Add("DesignNo", -1);
DataSet ds1 = PlateManager.GetInstance().GetList(ht1).
// 判断条件
if (radlCountdown.Text == "全部")
{
ds1 = ds;
}
else
{
if (radlCountdown.Text == "已交版")
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (ds.Tables[0].Rows[i]["Countdown"].ToString() == "已交版")
{
// 解决方法:加上:.ItemArray
ds1.Tables[0].Rows.Add(ds.Tables[0].Rows[i].ItemArray);
}
}
}
}