임의적으로 예외가 발생합니다. 나는 테이블에 바코드를 입력하는 바코드 스캐너를 가지고 있습니다. 이 코드는 C#으로 작성되었습니다. 처음에는 예외를 두 번 얻을 수있었습니다. 그러나 더 이상 생성 할 수 없습니다. 예외는 System.InvalidCastException : 형식 'System.Data.DataViewManagerListItemTypeDescriptor'의 형식을 'System.Data.DataRowView'형식으로 캐스팅 할 수 없습니다. 나는 처음에 2 개의 다른 물병을 스캐닝하여 각각 2 ~ 3 번씩 생성했습니다. 그런 다음 저장 버튼을 누르면 예외가 발생합니다. 나는 다른 누군가가 이전에이 오류가 발생 했었지만 같은 맥락에서 비슷한 문제가있는 사람을 찾을 수없는 경우 Google에 조사를 시도했습니다. 예외는 다음 코드 세그먼트에서 발생합니다 :System.InvalidCastException : System.Data.DataViewManagerListItemTypeDescriptor
foreach (object o in this.theBindingSource.List) { System.Data.DataRowView dataRowView1 = (System.Data.DataRowView)o; }
는 외관상으로는, 때때로, O 형의 System.Data.DataViewManagerListItemTypeDescriptor이며 형태가 아닌 System.Data.DataRowView의. 이 예외가 throw 된 이유는 무엇입니까?
BindingSource에 데이터베이스로 채워지 :
XYZDataAccess.TypedDataSets.ABCTag tags = XYZDataAccess.DAL.ABCTagDAL.GetABCTags( DeliverySession.DeliverySessionId); if (tags != null && tags.Tables[0] != null) { theBindingSource.Sort = ""; theBindingSource.DataSource = tags; }
I 바인딩 소스을 반복했던 이유는 다른 DataGridView에가 bindindg 소스의 내용이 채워 져야 할 필요가 있다는 점이다; 또한 DataGridView는 컨트롤 또는 뷰의 데이터에 대한 사용자 지정 정렬을 구현했습니다. List의 직접 액세스를 제거하는 것 외에 DisplayMember 속성을 지정해야합니까?
BindingSource는 어떻게 채우고 있습니까? – HVS
데이터베이스에서 BindingSource를 채우는 중입니다.
–DataGridView.CellFormatting 이벤트에서 동일한 오류가 발생합니다. 행의 DataBoundItem이 DataRowView가 될 것으로 예상되지만 대신 DataViewManagerListItemTypeDescriptor입니다. 왜 이런 일이 발생하는지 전혀 알지 못하지만 트리거는 BindingSource.DataSource를 형식화 된 DataSet에서 null로 변경 한 다음 유효한 형식화 된 DataSet으로 다시 설정하는 것으로 보입니다. DataSource를 형식화 된 DataSet으로 다시 변경하면 오류가 발생했습니다. 오류를 피하기 위해 DataSource를 null로 설정하지 마십시오. – Qwertie