2013-03-06 1 views
0

원본 쿼리 열 이름을 사용하여 DataGridView 행의 셀 값을 가져 오려고합니다. (속성은 BindingSource에 설정되어 그 데이터 소스 같이하십시오.) DataGridView에이 BindingSource에에서 채워집니다 번째 줄에InvalidCastException DataBoundItem에서 값 가져 오기

var obj = dataGridView1.CurrentRow.DataBoundItem; 

var item = (DataRow)obj; 

내가 InvalidCastException이 얻을 :

Unable to cast object of type 'System.Data.DataRowView' to type 'System.Data.DataRow'. 
+0

어떤 이벤트에서 코드를 실행 하시겠습니까? – Zaki

+0

메뉴 항목을 클릭하십시오. 행을 선택하고 메뉴 항목을 선택하고 행 데이터를 사용하여 무언가를하고 싶습니다. – cja

+0

이 도움이되는지 확인하십시오. http://stackoverflow.com/questions/3035144/right-click-to-select-a-row-in-a-datagridview-and-show-a-menu-to-delete-it – Zaki

답변

2

나는 당신의 데이터 소스가 DataTable의 추측을 . 이 경우 DataBoundItem의 형식은 DataRow 대신 DataRowView입니다. 이것은 DataGridView가 DataTable의 기본보기를 사용한다는 사실에 기반합니다.

 var obj = dataGridView1.CurrentRow.DataBoundItem; 

     if (obj != null) 
     { 
      var item = ((DataRowView)obj).Row; 
     } 

시 : 당신이 된 DataRow에 액세스하려면 당신이 필요 난 항상 이론적으로 null이 될 수있는 객체의 명시 적 캐스트를 피할 수 있습니다.