2017-04-21 23 views
8

Ödeme yapamayan bir tamsayı sütunu olan bir ödeme ödemesi var. Aşağıdaki sınıf ve listeye sahibim:C# bağlanması datagridviewcomboboxcolumn listeyi görüntülemek, biçimlendirmek, tercih edilen Boyut hatası

public class months 
{ 
    public int payMonth { get; set; } 
    public string monthName { get; set; } 
} 

lstMonths = new List<months> { 
    ,new months() { payMonth = 1, monthName = "jan" } 
    ,new months() { payMonth = 2, monthName = "feb" } 
    ,new months() { payMonth = 3, monthName = "mar" } 
    ,new months() { payMonth = 4, monthName = "apr" } 
    ,new months() { payMonth = 5, monthName = "may" } 
    ,new months() { payMonth = 6, monthName = "jun" } 
    ,new months() { payMonth = 7, monthName = "jul" } 
    ,new months() { payMonth = 8, monthName = "aug" } 
    ,new months() { payMonth = 9, monthName = "sep" } 
    ,new months() { payMonth = 10, monthName = "oct" } 
    ,new months() { payMonth = 11, monthName = "nov" } 
    ,new months() { payMonth = 12, monthName = "dec" }}; 

cmbMonth = new DataGridViewComboBoxColumn(); 
cmbMonth.DataSource = lstMonths; 
cmbMonth.ValueMember = "payMonth"; 
cmbMonth.DisplayMember = "monthName"; 
cmbMonth.DataPropertyName = "payMonth"; 
cmbMonth.Name = "cmbPayMonth"; 
cmbMonth.HeaderText = "Month"; 
cmbMonth.FlatStyle = FlatStyle.Flat; 
cmbMonth.Width = 80; 

dgvPayments.Columns.Insert(5, cmbMonth); 

Sorun burada gelir. Veriler dgv'de görüntülendiğinde, DataGridViewComboBoxColumn cmbMonth, ay ismini ('Jan', 'Feb', 'Mar', ...) değil, sayı değerlerini (1,2,3, ...) gösterir. Ve dgv'yi tıklattığımda, hatayı görüntülüyor: biçimlendirme, görüntüleme ve bazı zamanlar biçimlendirme, preferSize. DataPropertyName özelliğini kaldırdığımda, bu hata gider, ancak veriler görüntülenmez. Yine de, tablodaki payMonth değerleri yalnızca liste aralığında veya boş.

enter image description here

enter image description here

Sorun ne:

Bu ödemeler tablodur? Güncellemenize

Database type of payMonth column is Number: integer

MS Access tipi Number: integer sonra

+0

Ben senin kod örneğinde şüpheli bir şey görmüyoruz short olmak (Int16) payMonth özelliğini değiştirmek gerekir. DataGridVIew' için herhangi bir biçimlendirme olay işleyiciniz var mı? – Fabio

+0

İşleyici yok, ancak varsayılan hücre stili –

+0

Ödeme tablosunda 'payMonth' sütununun türü nedir? Aylar listesindeki gibi Int32 mi? – Fabio

cevap

6

16 bit tam sayı temsil - .NET Int16 türü.
Yani,

public class months 
{ 
    public short payMonth { get; set; } 
    public string monthName { get; set; } 
} 

List of the Most Common Data Type Mappings

+0

Veritabanı tablosundaki sütun adının DataPropertyName değeriyle aynı olduğundan eminim. PayMonth. –

İlgili konular