我有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成员。请指导我代码。感谢
答案 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?。