2012-11-19 8 views
7

Sorunun bu tam olarak ile ilgili bir sorun bulamadı sorununu karşıladı. this question ve this question benzer Hata: "DataGridViewComboBoxCell değeri geçerli değil." t DataSource temel tipte bir liste

, ben şeylerin bir listesine DataGridViewComboBoxColumn üzerinde DataSource ayarlıyorum. Benim durumumda, şeyler iki kat ve ints gibi basit türlerdir, bu yüzden ValueMembers ve DisplayMembers hakkında konuşulan cevaplar bana çok fazla şey yapmaz. Kullanıcı bir değer seçtiğinde, "DataGridViewComboBoxCell değeri geçerli değil" hatasını aldım.

Hatayı boş bir dataGridView_DataError işleyicisiyle yutmalıyım, ancak bu açıkça gidilecek kötü bir yoldur.

cevap

18

Yanıtı here buldum. Ayrıca, bu sorudaki ikinci bağlantıya this answer numaralı telefondan da değinilmiştir. bir dize değil bir şey listesine DataSource ayarlarken, typeof(<your data type>)

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

istedi kvCol.ValueType = typeof (double); 'teşekkürler – 56ka

+1

Not: Genel olarak ızgaralarımı tasarım zamanında yapıyorum. ValueType özelliği tasarım zamanında kullanılamaz, bu yüzden aşağıdaki kodu Form_Load rutini içine koyarım: gridSequences.Columns [Year.Name] .ValueType = typeof (Int32) –

0

Bu alt türleri hakkında titiz olduğu için sütunun ValueType ayarlayın. ValueType Int olduğunda hata hala sahibim, ancak DataSource SQLServer SMALLINT (bir Visual Studio 2010 Quick-Watch DataSource üzerinde bir Int32! olduğunu söyledi) içeriyordu. SMALLINT -> INT'den DB sütununu değiştirmek benim için düzeltdi.

0

benim için sorun benim açılan değerini 1, 2 ve 3 vardı .... benim veri kaynağı dönüyordu değer combobox mevcut değildi ... ama veri kaynağı hüner `idi 4.

İlgili konular