하나의 열이 ComboBox 인 DataTable에 바인딩 된 DataGridView를 만들려고합니다. 코드가 실행되지만 바인딩 후 데이터가 바인딩되지 않은 경우 다음 오류가 발생합니다. System.ArgumentException : DataGridViewComboBoxCell 값이 올바르지 않습니다. DataGridView를 열 중 하나에서 ComboBox가있는 DataTable에 DataGridView를 바인딩하지 않습니다.
이 소스의로 열거 (이름 structureType)를 사용하는 DataGridViewComboBoxColumn이다 : 나는 DataTable을 사용하지 않고있는 DataGridView를 채울 때// ColumnStructure
//
this.ColumnStructure.ValueType = typeof(structureType);
this.ColumnStructure.DataSource = Enum.GetValues(typeof(structureType));
this.ColumnStructure.HeaderText = "Structure";
this.ColumnStructure.Name = "ColumnStructure";
this.ColumnStructure.DataPropertyName = "Structure";
//
, 그것은 잘 작동 :
structureType? structure = GetStructure(part);
dgvObjectTypes.Rows.Add(name, type, structure, count);
이제 DataTable을 대신 사용하고 싶지만 제대로 작동하지 않습니다. DataTable은 다음과 같이 생성됩니다.
DataTable table = new DataTable();
table.Columns.Add("Name", typeof(string));
table.Columns.Add("Type", typeof(string));
table.Columns.Add("Structure", typeof(DataGridViewComboBoxCell));
table.Columns.Add("Count", typeof(int));
다른 열은 훌륭하게 작동하지만 "구조"열은 작동하지 않습니다. 그 후
var cb = new DataGridViewComboBoxCell();
cb.ValueType = typeof(structureType);
cb.DataSource = Enum.GetValues(typeof(structureType));
cb.Value = (structureType)structure;
난 그냥 테이블에 대한 행을 작성하고 DataGridView에 대한 데이터 소스로 테이블을 설정 : 내가 읽은
table.Rows.Add(name, type, cb, count);
dgv.DataSource = table;
여기에 내가 콤보를 만들려고 한 방법 콤보 상자에서 열거 형을 사용하면 문제가 발생한다는 게시물이 많이 있습니다 (예 : DataGridView linked to DataTable with Combobox column based on enum).하지만 여기서는 그렇지 않습니다. 명시 적으로 형식화 된 문자열 배열을 사용하려했지만 여전히 동일한 오류가 발생했습니다. DataGridViewComboBoxCell에 문제가 있다고 생각합니다.
무엇이 문제 일 수 있습니까?
고마워요! 나는 이미 희망을 잃었습니다. 추가 질문 : 'structureType?'이 null이면 combobox show를 비어있는 방법으로 설정할 수 있습니까? 멋지 겠지만 열거 형에 "None"을 추가하면됩니다. – JayByte
'없음'을 추가하는 것이 가장 간단합니다. – Plutonix