Datagridivew DataGridViewComboBoxColumn选择值成员

时间:2012-01-03 10:54:30

标签: c# datagridview datagridviewcombobox

我有datagridview,它有一个组合框列。我填充组合框列。当我从组合框列中选择任何文本时,我需要在读取for循环中的数据时获取值。

dgFilter在这里是datagridview

            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();
}

但问题是我没有得到combox值成员,而是我得到了显示成员。 那么如何从for循环中提取value成员。请指导我代码。感谢

1 个答案:

答案 0 :(得分: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 name/value how?