2017-04-21 16 views
8

Tôi có một thanh toán bảng có một cột số nguyên null có thể có tên là payMonth. Tôi có lớp và danh sách sau:C# ràng buộc datagridviewcomboboxcolumn để hiển thị danh sách, định dạng, ưa thích Lỗi kích thước

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

Sự cố xảy ra ở đây. Khi dữ liệu được hiển thị trong dgv, DataGridViewComboBoxColumn cmbMonth hiển thị các giá trị số (1,2,3, ...) không phải là tên tháng ('Jan', 'Feb', 'Mar', ...). Và khi tôi nhấp vào dgv nó sẽ hiển thị lỗi: định dạng, hiển thị và một số lần định dạng, ưa thíchSize. Khi tôi loại bỏ các DataPropertyName bất động sản, lỗi này đi nhưng dữ liệu không được hiển thị. Mặc dù, các giá trị payMonth trong bảng chỉ nằm trong phạm vi danh sách hoặc là null.

Đây là thanh toán bảng:

enter image description here

enter image description here

Whats sai?

+0

tôi thấy không có gì đáng ngờ trong mẫu mã của bạn. Bạn có bất kỳ trình xử lý sự kiện định dạng nào cho 'DataGridVIew' không? – Fabio

+0

Không có trình xử lý nào, nhưng kiểu ô mặc định –

+0

Loại cột 'payMonth' trong bảng thanh toán là gì? Có phải «Int32' như trong danh sách tháng? – Fabio

Trả lời

6

Sau khi cập nhật của bạn

Database type of payMonth column is Number: integer

MS Access loại Number: integer đại diện cho 16-bit số nguyên - Int16 gõ vào Net.
Vì vậy, bạn nên thay đổi payMonth tài sản để được short (Int16)

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

List of the Most Common Data Type Mappings

+0

Tôi chắc chắn rằng tên cột trong bảng cơ sở dữ liệu giống như giá trị DataPropertyName. Nó là payMonth. –

Các vấn đề liên quan