我有一个示例代码如下所示。
DataRow dr = DTSource.Rows[rowIndex]; //getting specified index row
DTSource.Rows.RemoveAt(rowIndex); // deleting specified row
DTSource.Rows.InsertAt(dr, rowIndex - 1); // adding the row placed just above of the deleted row
此处,在将特定行插入指定索引之后,数据表在最近插入的位置显示空行。如何添加包含数据的行而不是此空行?
答案 0 :(得分:1)
基于Mnieto和Tim Schmelter Answers,我已经改变了我的代码。
DataRow dr = DTSource.NewRow();
for (int i = 0; i < DTSource.Columns.Count; i++)
dr[i] = DTSource.Rows[rowIndex][i];
现在它正在为我工作。
答案 1 :(得分:0)
dr已删除。那是因为数据表显示一个空行。让我们一步一步看:
DataRow dr = DTSource.Rows[rowIndex];
在dr变量
中保存一行DTSource.Rows.RemoveAt(rowIndex);
您删除该行。 dr变量现在指向已删除的行。
DTSource.Rows.InsertAt(dr, rowIndex - 1);
您正在将已删除的行插入另一个位置
如果要移动行位置,则应该对数据行进行深层复制。
答案 2 :(得分:0)
查看RemoveAt
的文档:
从集合中删除指定索引处的行。 删除行后,该行中的所有数据都将丢失。 ...
因此,您需要暂时保留数据,例如使用row.ItemArray
DataRow row = DTSource.Rows[rowIndex]; //getting specified index row
var data = row.ItemArray; // all fields of that row
DTSource.Rows.RemoveAt(rowIndex); // removes row and it's data
row.ItemArray = data; // reassign data
DTSource.Rows.InsertAt(row, rowIndex - 1); // adding the row placed just above of