Saya mencoba membuat DataGridView yang terikat ke DataTable di mana satu kolomnya adalah ComboBox. Kode berjalan tetapi saya mendapatkan kesalahan berikut setelah mengikat (bukan ketika data terikat): System.ArgumentException: Nilai DataGridViewComboBoxCell tidak valid.
Dalam DataGridView salah satu kolomnya adalah DataGridViewComboBoxColumn yang menggunakan enum (bernama StructureType) sebagai sumbernya:
// 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";
//
Saat saya mengisi DataGridView tanpa menggunakan DataTable, itu berfungsi dengan baik:
structureType? structure = GetStructure(part);
dgvObjectTypes.Rows.Add(name, type, structure, count);
Sekarang saya ingin menggunakan DataTable, tetapi tidak bisa berfungsi. DataTable dibuat sebagai berikut:
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));
Kolom lain berfungsi dengan baik tetapi saya tidak dapat mengaktifkan kolom "Struktur". Inilah cara saya mencoba membuat kotak kombo:
var cb = new DataGridViewComboBoxCell();
cb.ValueType = typeof(structureType);
cb.DataSource = Enum.GetValues(typeof(structureType));
cb.Value = (structureType)structure;
Setelah itu saya tinggal membuat baris untuk tabel dan mengatur tabel sebagai sumber data untuk DataGridView:
table.Rows.Add(name, type, cb, count);
dgv.DataSource = table;
Saya telah membaca banyak postingan yang menyatakan bahwa menggunakan enum di kotak kombo menyebabkan masalah (misalnya: DataGridView ditautkan ke DataTable dengan kolom Combobox berdasarkan enum), tetapi tampaknya tidak demikian di sini. Saya bahkan mencoba menggunakan array string yang diketik secara eksplisit tetapi masih mendapatkan kesalahan yang sama. Saya rasa saya melakukan sesuatu yang salah dengan DataGridViewComboBoxCell.
Apa masalahnya?