我做了个如下的测试:
DataSet ds = new DataSet();
myAdp.Fill(ds,"myTab");
DataTable tab = new DataTable();
tab = ds.Tables["myTab"].Clone();
DataRow newRow = tab.NewRow();
try
{
    foreach(DataRow myR in ds.Tables["myTab"].Rows)
    {
newRow = myR;
*** tab.Rows.Add(newRow);    ***
    }
}
catch(Exception ex)
{
    MessageBox.Show(ex.Message);
}
报错:此列在别的表里面存在!
但是,我去掉   tab.Rows.Add(newRow);    这一行之后,执行很正确。
请各位高手指点迷津,小弟在此谢过了!!!

解决方案 »

  1.   

    foreach(DataRow myR in ds.Tables["myTab"].Rows)
        {
    tab.ImportRow(myR);
    }
      

  2.   

    程序的逻辑有些问题吧,你复制了DataTable,然后你还要用dataSet给它赋值吗?
      

  3.   

    不是吧
    tab = ds.Tables["myTab"].Clone();是得到一个表的结构,包括所有的列名,但没有值,我这样理解,不知正确否。
      

  4.   

    可以将newRow = myR;改成:
      
    newRow.ItemArray = myR.ItemArray;