2011-03-14 9 views
2

선택한 행을 DataTable로 가져 와서 함수로 보내려고합니다. 나는 버튼 클리닉에 다음 코드 세트로 간다. 코드 :DataTable의 DataRow 가져 오기

var dt = new DataTable(); 
foreach (var DataRow in dataGridView1.SelectedRows) 
    dt.ImportRow(DataRow); 

그러나 오류가 있으며 개체에서 DataRow로 변환 할 수 없다. 이 문제를 해결하기위한 제안이 있습니까?

+0

항목은 "dataGridView1.SelectedRows"에서 반환 형식 대신하여 DataRow의 "GridViewItem"한다. –

+0

Gridrow의 데이터row? – V4Vendetta

+2

실제로 'DataGridViewRow'여야합니다 : http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewselectedrowcollection.aspx – Stecya

답변

4

ImportRowDataRow이 필요하므로 사용할 수 없습니다. DataGridView.SelectedRowsDataGridViewRow의 콜렉션을 리턴합니다.

DataGridViewRow이 아니고,a이된다. 그러나 실제 DataRow 얻기 위해 DataGridViewRowDataBoundItem 속성을 사용할 수 있습니다 :

foreach (DataGridViewRow dataRow in dataGridView1.SelectedRows) 
{ 
    DataRow dataBoundItem = ((DataRowView)dataRow.DataBoundItem).Row; 
    dt.ImportRow(dataBoundItem); 
} 
+0

답변을위한 Thx. dataBoundItem에는 각 행이 포함되어 있지만 dt.importRow에는 작업이 없습니다. foreach 루프를 디버깅하고 dataBoundItem에 DataRow가 있지만 dt가 비어 있습니다. 나는 이유를 모른다. – kockiren

+0

@ kockiren - 가져 오는 DataTable이 가져올 DataTable의 열과 일치하는 경우에만 작동합니다. – GenericTypeTea

+0

간단한 방법으로 TableStructur를 만들 수 있습니까? 또는 foreach dataRow.column을 사용하여 구조체를 만들어야합니까? – kockiren