1

友人、私は datagridview の列インデックス 1 として datagridviewcomboboxcolumn を使用しています。アクセス データベース テーブルからデータをフェッチし、次の方法で datagridviewcomboboxcolumn にデータを入力しました。

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

それから私はこれを書いています:

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

そして、この列を次のように追加します

    dgView.Columns.Add(cmbBusCode);

コンボボックスが作成され、リストから任意のコンボボックスを選択できます。データを保存するときに、選択した項目の ValueMember を取得したいと考えています。この値を取得するには、次のコードを使用していますが、値ではなくフィールド「BUSINESS_CODE」の文字列表現を提供しています.選択したアイテムのValueMemeberを取得できるように助けてください..

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

2 に答える 2

0

列に追加する「項目」には「BUSINESS_CODE」列がないため (基本的に、追加する項目は単なる文字列です)、機能しません。

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

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

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

于 2012-05-04T10:11:48.087 に答える
-1

コレクションに a のDataGridViewComboBoxCell代わりに astringを追加してみてください。その後、セルでcmbBusCode.Items指定できます。Valueこれが機能するかどうかはわかりませんが、試してみる価値はあります。

于 2012-05-04T10:18:31.770 に答える