2012-05-04 23 views
1

友達、私はdatagridviewの列インデックス1としてdatagridviewcomboboxcolumnを使用しています。私は、Accessデータベースのテーブルからデータをフェッチし、次のようにしてdatagridviewcomboboxcolumnを埋めました:DataGridviewcomboboxcolumnのValueMemberの値を取得する方法

dgView.Columns.Add(cmbBusCode); 

として

 cmbBusCode.DisplayIndex = 1; 
     cmbBusCode.Width = 200; 
     cmbBusCode.Name = "Code"; 
     cmbBusCode.HeaderText = "Code"; 

そして追加するこのコラム:次に

for (int i = 0; reader.Read(); i++) 
     { 
      cmbBusCode.Items.Add(reader["BUSINESS_CODE"] + "-" + reader["BUSINESS_DESCRIPTION"]); 
      cmbBusCode.ValueMember = "BUSINESS_CODE"; 
     } 

私は、この書いていますコンボボックスにデータが入力されているので、リストから任意のデータを選択できます。データを保存するときに、選択したアイテムのValueMemberを取得します。私は、次のコードを使用していますが、それは、フィールド「BUSINESS_CODE」それは、選択した項目のValueMemeberを得るようvalue..Pleaseが私を助けていない。..

foreach (DataGridViewRow row in dgView.Rows) 
    { 
     string cd = row.Cells["Code"].Value.ToString(); 
    } 

答えて

0

の文字列表現に「の項目を与えて、この値を取得するには"列に追加する列には" BUSINESS_CODE "列がありません(基本的に、追加する項目は単なる文字列です)ので、機能しません。

複数の列を含むアイテムを割り当てる必要があります。 1つはBUSINESS_CODE列である必要があります(この列はDataGridViewの下位フィールドの値になります)。もう1つは、現在追加している連結値を含む表示列です(DisplayMemberおよびValueMember )。

最も簡単なのは、型指定されたデータセットを作成し、私が説明した2つの列を含むテーブルを追加し、データリーダーのデータで表を埋めることです。

次に、テーブルを列のデータソースとして追加します。

-1

stringの代わりにDataGridViewComboBoxCellcmbBusCode.Itemsコレクションに追加できます。セルにValueを指定できます。これがうまくいくかどうかはわかりませんが、試してみる価値があります。

+0

Huh? 'cmbBusCode'は' DataGridViewComboBoxCell'です!その 'Items'コレクションは表示され、選択可能なアイテムのリストを取ることになっています。アイテムとして渡されたオブジェクトに 'DisplayMember'と' ValueMember'の値に対応するメンバーが含まれている場合、これらのメンバーの値は表示されるか、基になるデータオブジェクトのフィールドに割り当てられます。あなたが示唆しているのは、試してみる価値がありません。これは、どのように動作するかではないからです。 –

+0

@ThorstenDittmar、はいcmbBusCodeはDataGridViewComboBoxColumnであり、上記のコードを使用しています。私はリスト内の選択された項目の対応するValueMemberを取得したいと思っていました。しかし、私は取得していません.. – Sukanya

+0

あなたは私の答えをお読みですか?アイテムには、 'ValueMember'プロパティに割り当てる名前のプロパティが含まれていません。私の答えを読んでください。あなたにアナロジーを与えるには: 'button_Click'という名前のメソッドを書くことができますが、ボタンの' Click'イベントにそれを割り当てない限り呼び出されません。値を取得していないのは、プロパティの名前を 'ValueMember'に代入したが、その名前のものは何もないからです。 –

関連する問題