DataTable dtStaff;
DataTable dttmpStaff;...
//SqlDataAdapter已Fill了DatadtStaff.
...dttmpStaff=dtStaff.clone();            foreach (DataRow dr in dtStaff.Rows )
            {
                str=dr["stf_id"].ToString();
                if (str=="123")
                {
                     dttmpStaff.Rows.Add(dr);//这条代码报错:该行已经属于另一个表。                }
            }怎么样写 才行叫呢???  请教!!

解决方案 »

  1.   

    ImprotRow 方法吧。具体看MSDN
      

  2.   

    你那样加不行,需要new一个row,把内容逐个写入,然后add这个新的row
      

  3.   

    dttmpStaff = dtStaff.Clone();foreach (DataRow dr in dtStaff.Rows)
    {
    string str = dr["stf_id"].ToString();
    if (str == "123")
    {
    DataRow dataRow = dttmpStaff.NewRow();
    dataRow.ItemArray = dr.ItemArray;
    dttmpStaff.Rows.Add(dataRow);
    }
    }
      

  4.   


    注意两个表的架构要一直 
    目的DataTable对象.ImportRow(源DataTable.Row);
      

  5.   


    foreach (DataRow dr in dtStaff.Rows )
      {
      str=dr["stf_id"].ToString();
      if (str=="123")
      {
          dtStaff.ImportRow(dr);//测试通过
      }
    这样可以
      

  6.   

      
      DataRow row = dttmpStaff.NewRow;
      foreach (DataRow dr in dtStaff.Rows )
      {
      str=dr["stf_id"].ToString();
      if (str=="123")
      {
      row = dr;
      dttmpStaff.Rows.Add(row);
      }
      

  7.   

    说明你加入了一行相同的信息,如果有一列的信息是key,而且相同,就报错了。