//dtTemp是DataTable的实例,并且已经存在行了
 DataRow dr = dtTemp.NewRow();
 dr = dtTemp.Rows[i];
 dtTemp.Rows.RemoveAt(i);
 dtTemp.AcceptChanges();
 dtTemp.Rows.InsertAt(dr,i+1); 
 我建立一个新行接收这个i行移除那个行,然后在插入这个行的下一行,结果是空白,我试过dr接收完是有数的,为什么插入完事却不行呢,却是空白

解决方案 »

  1.   

    RemoveAt(int index)是直接再dtTemp中移除这行,
    dtTemp.AcceptChanges()是否执行dtTemp已经没有这行了,
      

  2.   

    dtTemp.Rows.InsertAt(dr,i+1);  这个dr已经被你移除了。
      

  3.   

    dt.Rows.InsertAt(dr, 0); 
    dt.AcceptChanges(); 
      

  4.   

    不行你就把dr逐个赋值,那样dr值就不是空了,再执行 删除和插入你懂的O(∩_∩)O~
      

  5.   

    DataRow应该Clone出值,再Insert否则会提示异常。可以看下面的示例://data是DataTable实例
    data.ImportRow(data.Rows[2]);
    data.Rows[2].Delete();
    data.AcceptChanges();另外RemoveAt等价于Delete再AcceptChanges。
    但Delete支持循环删除。如果想用InsertAt方法的话,就必需循环构造一个新的DataRow实例。
    DataRow newRow = data.NewRow();
    foreach (DataColumn col in data.Columns)
        newRow[col] = data.Rows[2][col];
    data.Rows.InsertAt(newRow, 2);