朋友们,我在我的datagridview中使用datagridviewcomboboxcolumn作为列索引1。我已经从访问数据库表中获取了数据,并通过以下方式填充了数据网格视图组合框列:
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);
组合框正在填充中,我可以从列表中选择任何一个。现在,当我保存数据时,我想获取所选项的值成员。为了获得这个值,我使用以下代码,但它给出了字段"BUSINESS_CODE"的字符串表示形式,而不是值。请帮助我,以便获得所选项目的ValueMemeber。
foreach (DataGridViewRow row in dgView.Rows)
{
string cd = row.Cells["Code"].Value.ToString();
}
您要添加到列中的"项目"没有"BUSINESS_CODE"列(本质上,您添加的项目只是一个字符串),因此这不起作用。
您需要做的是分配包含多个列的项目。一个必须是BUSINESS_CODE
列(因为您希望此列成为DataGridView
中基础字段的值),另一个应该是包含您当前添加的串联值的显示列(DisplayMember
和 ValueMember
)。
最简单的方法是创建一个类型化数据集,添加一个包含我描述的两列的表,并用数据读取器中的数据填充该表。
然后,将表添加为列的数据源。
您可以尝试向cmbBusCode.Items
集合添加DataGridViewComboBoxCell
而不是string
。然后,可以在单元格中指定Value
。我不确定这是否有效,但值得一试。