3

コンボボックス列が 1 つある datagridview があります。コンボボックス列に入力します。コンボボックス列から任意のテキストを選択すると、for ループでデータを読み取るときに値を取得する必要があります。

dgFilter はこちら

            DataGridViewComboBoxColumn dgcoSpec = new DataGridViewComboBoxColumn();
            dgcoSpec = new DataGridViewComboBoxColumn();
            dgcoSpec.DataSource = loadOperators();
            dgcoSpec.DisplayMember = "Operatortxt";
            dgcoSpec.ValueMember = "Operatorvalue";
            dgcoSpec.AutoComplete = true;
            dgcoSpec.HeaderText = "Operators";
            dgcoSpec.Name = "Operators";
            dgcoSpec.DefaultCellStyle.NullValue = "--Select--";
            dgcoSpec.Width = 130;
            dgFilter.Columns.Insert(1, dgcoSpec);

ここでこの方法でコンボボックス列からデータを読み取ります

for (int i = 0; i <= dgFilter.Rows.Count - 1; i++)
{
  strOperator = dgFilter.Rows[i].Cells[1].Value.ToString().Trim();
}

しかし問題は、表示メンバーを取得しているのではなく、コンボックス値メンバーを取得していないことです。forループから値メンバーを抽出する方法。コードを教えてください。ありがとう

4

1 に答える 1

1

値メンバー、 内に表示される文字列ですDataGridViewComboboxCell

実際のComboboxコントロールは、ユーザーがセルを編集している時間枠の間のみ存在します。

アイテムのリスト内の値のインデックスを取得したい場合は、値DataGridViewComboboxCellのインデックスをクエリできます。

for (int i = 0; i <= dgFilter.Rows.Count - 1; i++)
{
    var cell = dgFilter.Rows[i].Cells[1] as DataGridViewComboboxCell;
    int index = cell == null || cell.Value == null ? -1 : cell.Items.IndexOf(cell.Value);
    Console.WriteLine(index);
}

この例では、無効な-1値として使用しています。

編集DataSource;を使用していることに気づきました。DataGridViewComboBoxColumn の名前/値を参照してください。重複の可能性があります。

于 2012-01-03T11:08:49.727 に答える