2017-04-21 48 views
8

我有一個表具有名爲payMonth無效整數列付款。我有以下班級和名單:C#綁定datagridviewcomboboxcolumn列表顯示,格式,首選大小錯誤

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); 

問題出現在這裏。當數據顯示在dgv中時,DataGridViewComboBoxColumn cmbMonth顯示數字值(1,2,3,...)而不是月份名稱('Jan','Feb','Mar',...)。當我點擊dgv時,它顯示錯誤:格式化,顯示和一些時間格式化,preferredSize。當我刪除DataPropertyName屬性時,出現此錯誤,但不顯示數據。但是,表中的payMonth值只在列表範圍內或爲空。

這是支付表:

enter image description here

enter image description here

的哪些錯誤?

+0

我沒有發現可疑的代碼樣本。你有'DataGridVIew'的格式化事件處理程序嗎? – Fabio

+0

沒有處理程序,但默認的單元格樣式 –

+0

付款表中的「payMonth」列的類型是什麼?它是'Int32'在月份列表中? – Fabio

回答

6

您的更新

Database type of payMonth column is Number: integer

的MS Access類型Number: integer後代表16位整數 - 在.net Int16類型。
所以,你應該改變payMonth屬性爲short(Int16的)

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

List of the Most Common Data Type Mappings

+0

我確信數據庫表中的列名與DataPropertyName的值相同。這是payMonth。 –