使用Rows.InsertAt输入空行

时间:2014-01-26 10:32:21

标签: c# datatable datarow

我有一个带有DataTable数据源的listBox。我正在尝试创建一个按钮,将DataRow向上移动DataTable。

这是我正在尝试的代码。但是当它运行时,它会删除正确的Datarow,但会在正确的位置插入一个空行。

DataRow row;            
row = SelectedPlayersHome.Rows[selectedIndex];
int temp = SelectedPlayersHome.Rows.IndexOf(row);
SelectedPlayersHome.Rows.RemoveAt(temp);
SelectedPlayersHome.Rows.InsertAt(row, temp - 1);

即使我正在创建该行的副本,但是当我从表中删除该行时,它会删除新创建的行中的数据。

关于如何解决这个问题的想法?

1 个答案:

答案 0 :(得分:2)

通过这样做:

row = SelectedPlayersHome.Rows[selectedIndex];

实际上,您并未创建该行的副本,而是将该行的引用分配给row变量。

你应该这样做:

DataRow row = SelectedPlayersHome.NewRow();             
DataRow selectedRow= SelectedPlayersHome.Rows[selectedIndex];
row.ItemArray= selectedRow.ItemArray; // <-- copy data
SelectedPlayersHome.Rows.Remove(selectedRow);
SelectedPlayersHome.Rows.InsertAt(row, selectedIndex +1/-1); // depending if you want to go up or down