2014-01-26 95 views
0

我有一個DataTable數據源的列表框。我正在嘗試創建一個將DataRow移動到DataTable上的按鈕。使用Rows.InsertAt進入空白行

這是我正在嘗試的代碼。但是當它運行時,它會刪除正確的Datarow,但會在正確的位置插入空行。

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

即使我創建行的副本,它顯示的是,當我從表中刪除的行,它從新創建的行刪除數據。

想法如何解決這個問題?

回答

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 
+0

原因是正確的,但是,這並不回答問題如何解決問題 –

+0

我種有一種感覺,是什麼問題了,但不是100%確定。那麼我將如何對付這個? – Blair

+1

我想你應該使用'SelectedPlayersHome.NewRow()'而不是'new DataRow()' –