programing/C#

[C#] DataGridView 간 DataRow 이동.(DataTable add 시 이 행은 이미 다른 테이블에 속해 있습니다.)

쪽제비 2016. 9. 3. 17:44

오늘은 삽질을 꽤나 오래 했다.

DataGridView 간 DataRow를 이동시키려고 했는데 자꾸 예외가 떳다.

상황은 DataGridView에 DataTable을 바인딩 시키고 클릭한 Row를 삭제하고 옆에 있는 DataGrid에 옮기는 것이다.


이 상태에서 홍길동을 클릭하면 오른쪽 으로 옮겨가는 것을 할 것이다.


이런식이다.


   

코드는 이러하다.

dataGridView.DataSource에 DataTable을 넣고 CellClick 이벤트가 발생하면 선택된 Row를 오른쪽에 추가하고 

선택된 Row를 삭제하는 것이다.


우선 첫번째 발생했던 문제는 dataGridView2.Add(row)를 할 경우 발생한다.

위처럼 DataTable을 변경하는 것이 아니라 직접 dataGridView에서 수정하려고 할 경우 바인딩 되어 있어 안된다고 에러가 발생한다. 따라서.. 방법은 바인딩 된 DataTable을 수정하는 것이다.


두번째 발생했던 문제..

선택한 Row를 어떻게 DataRow로 변경할 것인가.!!!!

구글링을 쭉 해본결과 찾아냈다.



이런 식으로하면 해결 !! 어느 외국 커뮤니티에서 발견하였다. 


DataGridViewRowCollection to DataRow 로 검색했던것같다.




세번재 발생한 문제 !!!!!

dt2.Rows.Add(row) 를 할때 발생한다.

"이 행은 이미 다른 테이블에 속해 있습니다" 라는 에러 인데.. 이것도 한참을 헤맨 결과 찾았다.

dt2.Rows.Add(row.ItemArray);


MSDN에 나오니 자세히 보면 될것 같다.