2012-01-04 19 views
0

このスレッドの情報を使用して、セットアップを行い、オプションでdatagridviewcomboboxolumnを動的に設定しようとしました。私のデバッガはエラーは表示されませんが、コンボボックスはレンダリングされません。DataGridViewComboBoxColumnはカスタムデータソースでレンダリングされません

//setup combobox 
List<combo_automation_option> combo = new List<combo_automation_option>(); 
combo.Add(new combo_automation_option { id = "0", value = "None" }); 
combo.Add(new combo_automation_option { id = "*.0.5", value = "Once every 5 minutes" }); 

dgv_col_automation.HeaderText = "Automation"; 
dgv_col_automation.Name = "dgv_jobs_col_automation"; 
dgv_col_automation.FlatStyle = FlatStyle.Flat; 
dgv_col_automation.DataSource = combo; 
dgv_col_automation.ValueMember = "id"; 
dgv_col_automation.DataPropertyName = "value"; 

jobs_datagrid.Columns.Add(dgv_col_automation); 

私はコンボボックスの設定に以下の設定を使用する場合には微細化:

//setup combobox       
dt_col_automation.HeaderText = "Automation"; 
dt_col_automation.Name = "dgv_jobs_col_automation"; 
dt_col_automation.Items.AddRange(
     "Once every 5 minutes", 
     "Once every 10 minutes", 
     "Once every 15 minutes", 
     "Once every 30 minutes", 
     "Once every hour", 
     "Once every 2 hours", 
     "Once every 3 hours", 
     "Once every 4 hours", 
     "Once every 5 hours", 
     "Once every 6 hours", 
     "Once every 7 hours", 
     "Once every 8 hours", 
     "Once every 9 hours", 
     "Once every 10 hours", 
     "Once every 11 hours", 
     "Once every 12 hours", 
     "1", 
     "2", 
     "3", 
     "4", 
     "5", 
     "6", 
     "7", 
     "8", 
     "9", 
     "10", 
     "11", 
     "12", 
     "13", 
     "14", 
     "15", 
     "16", 
     "17", 
     "18", 
     "19", 
     "20", 
     "21", 
     "22", 
     "23", 
     "24" 
    ); 

私はこのようになります公共のstructました:

public struct combo_automation_option { 
    public string id; 
    public string value; 
} 

何かアドバイスを?

答えて

2

公開されていても、クラス/フィールドにデータバインディングは機能しません。

あなたは、プロパティを使用する必要があります代わりに、例えば:

public struct combo_automation_option { 
    public string id {get; set;} 
    public string value {get; set;} 
} 

さらに、あなたの代わりにコンボボックスのidの何か他のもの(例えば値)、DisplayMemberプロパティも設定を表示したい場合。

ところで、他のいくつかの提案:本当に必要ならば

  • 構造体のみを使用する必要があります。クラスを使用する代わりに
  • あなたはいつもキャメルケーシング(アンダースコアなし)であり、構造体/クラス、メソッド、プロパティのみが大文字で始まらなければならない通常のC#命名規則に従っていません。あなたは私の問題を修正しますが、Visual StudioはDataGridViewComboBoxColumがDisplayPropertyの定義が含まれていないと言う提案のような構造体を更新
+0

(ハリス・ハサンは、彼のポストを削除している必要があり、私はそれを見つけることができません。) また、私は得ることができませんその列(現在は0)の各行の値を使用して、事前選択項目として「なし」を設定します。私はC#を初めて使っています。 – atwellpub

+0

@atwellpub:もちろん、申し訳ありませんが間違いました。「DisplayMemberプロパティ」ではなく「DisplayPropertyメンバ」と書いてあります(正しい名前はDisplayMemberです)。今修正されました。 – digEmAll

+0

@atwellpub:あなたの2番目の問題について...すでにデータグリッドにいくつかの行を追加しましたか?もしそうなら、単にコレクションをループする: 'foreach(jobs_datagrid.RowsのDataGridViewRow行)'と値を設定する: 'rowCells [yourComboColumnIndex] .Value =" 0 ";' – digEmAll

関連する問題