2017-04-21 3 views
8

payMonth라는 null 가능 정수 열이있는 테이블 지불이 있습니다. 다음과 같은 수업 및 목록이 있습니다 :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는 월 이름 ('Jan', 'Feb', 'Mar'...)이 아닌 숫자 값 (1,2,3, ...)을 표시합니다. 그리고 내가 dgv를 클릭하면 오류를 표시합니다 : 형식 지정, 표시 및 someSize 형식, preferredSize. DataPropertyName 속성을 제거하면이 오류가 발생하지만 데이터가 표시되지 않습니다. 하지만 테이블의 payMonth 값은 목록 범위에만 있거나 null입니다.

enter image description here

enter image description here

무슨 잘못 :

이것은 지불 테이블입니까? 당신의 갱신

Database type of payMonth column is Number: integer

MS 액세스 유형 Number: integer

+0

내가 당신의 코드 샘플에서 의심스러운 아무것도 볼 short로 (INT16)를 payMonth 속성을 변경해야합니다. 'DataGridVIew'에 대한 형식화 이벤트 핸들러가 있습니까? – Fabio

+0

처리기가 없지만 기본 셀 스타일 –

+0

지불 테이블에'payMonth' 열의 유형은 무엇입니까? 개월 목록에있는 'Int32'입니까? – Fabio

답변

6

16 비트 정수를 나타냅니다 - 닷넷에서 Int16 유형입니다.
그래서, 당신은

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

List of the Most Common Data Type Mappings

+0

데이터베이스 테이블의 열 이름이 DataPropertyName 값과 동일해야합니다. 월급입니다. –