2014-01-26 1 views
0

У меня есть listBox с источником данных DataTable. Я пытаюсь создать кнопку, которая будет перемещать DataRow в DataTable.Использование строк. 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()' –

Смежные вопросы