2013-11-20 1 views
1

다른 DataGridView에서 행을 복사하는 방법을 알고 싶습니다. 그들은 datatable로 묶여있다. 나는 이것을 시도하고 있지만 작동하지 않습니다!DataTable과 바인딩 된 DataGridView간에 행을 복사하는 방법

For k As Integer = 0 To gridA.SelectedRows.Count 
    Dim row As DataRow = dtA.Rows(gridA.SelectedRows(k).Index) 
    dtB.ImportRow(row) 
Next 

그런 다음 gridA에서 행을 삭제합니다

For k As Integer = 0 To gridA.SelectedRows.Count 
    dtA.Rows.RemoveAt(gridA.SelectedRows(k).Index) 
Next 
+0

당신이 예외를 받고 있습니까? –

+0

"매개 변수로 전달 된 DataRow가 분리 상태이면 무시되고 예외가 throw되지 않습니다." - [MSDN] (http://msdn.microsoft.com/en-us/library/system.data.datatable.importrow.aspx) 그럴 수 있습니까? 예외가 발생하거나 가져온 후 테이블에 행이 표시되지 않습니까? – Poornima

+0

보기의 인덱스가 DataTable의 인덱스와 일치하지 않을 수 있으므로 DataGridView 및 DataTable에서 행을 일치시키는 데 인덱스를 사용할 수 없습니다. 뷰의 인덱스는 DataView의 인덱스에 해당합니다. 정의하지 않은 경우에도 기본값이 있습니다. DataSource가 아닌 DataView를 따라야합니다. –

답변

0

행이 DataTable에와는 다른 순서로 정렬 될 수 있기 때문에 문제가 될 수있는 데이터 그리드의 인덱스를 사용.

내가 이동하고 삭제하는 실제 행 객체를 사용하도록 예를-일 다시

:

Dim rows As DataGridViewSelectedRowCollection = gridA.SelectedRows 

For Each row As DataGridViewRow In rows 
    dtB.ImportRow(DirectCast(row.DataBoundItem, DataRowView).Row) 
Next 

For Each row As DataGridViewRow In rows 
    dtA.Rows.Remove(DirectCast(row.DataBoundItem, DataRowView).Row) 
Next 
관련 문제