2012-11-19 5 views
7

정확히과 일치하는 질문을 찾을 수 없습니다.오류 : "DataGridViewComboBoxCell 값이 올바르지 않습니다." t DataSource는 기본 유형 목록입니다

this questionthis question과 비슷하게 DataGridViewComboBoxColumn에있는 DataSource을 목록으로 설정합니다. 내 경우에는 물건이 double과 int 같은 간단한 유형이므로 ValueMembers 및 DisplayMembers에 대한 답변은 나에게 많은 도움이되지 못합니다. 사용자가 값을 선택하면 "DataGridViewComboBoxCell 값이 유효하지 않습니다."오류가 발생합니다.

빈 dataGridView_DataError 처리기로 오류를 삼킬 수 있지만 분명히 나쁜 방법입니다.

답변

18

대답은 here입니다. 그것은 또한 내 질문에 두 번째 링크에 this answer 언급했다. 문자열이 아니다 아무것도의 목록에 DataSource을 설정하는 경우, typeof(<your data type>)

 IList<double> kvChoices; 
     // Populate kvChoices... 
     DataGridViewComboBoxColumn kvCol = 
      dataGridView1.Columns[0] as DataGridViewComboBoxColumn; 
     kvCol.DataSource = kvChoices; 
     kvCol.ValueType = typeof(double); 
+1

원 kvCol.ValueType = typeof (double);'thanks – 56ka

+1

참고 : 일반적으로 디자인 타임에 그리드를 구성합니다. 디자인 타임에 ValueType 속성을 사용할 수 없으므로 Form_Load 루틴에 다음 코드를 추가합니다. gridSequences.Columns [Year.Name] .ValueType = typeof (Int32) –

0

이 하위 유형에 대한 까다로운되는 컬럼의 ValueType을 설정합니다. ValueType이 Int이지만 DataSource에 SQLServer SMALLINT가 포함되어있는 경우에도 오류가 발생합니다 (Visual Studio 2010 Quick-Watch에서 DataSource에 대한 설명이 인 경우은 Int32입니다!). DB 열을 SMALLINT에서 변경 -> INT 고정 나를 위해.

0

나를 위해 문제는 내 콤보 값 1, 2, 3을했다 .... 내 데이터 소스가 반환 한 값이 콤보 상자에서 사용할 수없는 것이 었습니다 ...하지만 데이터 소스는 트릭 '이었다 4.

관련 문제