2017-04-21 15 views
8

私はpayMonthという名前のヌル可能な整数列を持つテーブル支払いを持っています。私は以下のクラスとリストを持っています: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); 

ここに問題があります。データがdgvに表示されるとき、DataGridViewComboBoxColumn cmbMonthは月の値( 'Jan'、 'Feb'、 'Mar'、...)ではなく数値(1,2,3、...)を示します。そして、私がdgvをクリックすると、フォーマット、表示、時折書式設定、preferredSizeというエラーが表示されます。 DataPropertyNameプロパティを削除すると、このエラーは発生しますが、データは表示されません。ただし、テーブル内のpayMonth値はリスト範囲内にあるか、またはnullです。

これは、支払い表です:

enter image description here

enter image description here

いただきましたの?あなたの更新

Database type of payMonth column is Number: integer

MSアクセスタイプNumber: integer

+0

するpayMonthプロパティを変更する必要があります。 'DataGridVIew'のためのどんなフォーマットイベントハンドラもありますか? – Fabio

+0

ハンドラはありませんが、デフォルトのセルスタイル –

+0

支払いテーブルに 'payMonth'カラムのタイプは何ですか?月のリストのように 'Int32'ですか? – Fabio

答えて

6

は、16ビットの整数を表し、 - .NETでInt16タイプ。
だから、あなたは私はあなたのコードサンプルで不審な何も見ない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です。 –

関連する問題