如何获取datagridviewcomboboxcolumn的ValueMember值

时间:2012-05-04 10:05:21

标签: c# winforms datagridviewcombobox valuemember

朋友们,我在datagridview中使用datagridviewcomboboxcolumn作为列索引1。我从访问数据库表中获取数据,并按以下方式填充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);

正在填充Combobox,我可以从列表中选择任何一个。现在,当我保存数据时,我想获得所选项目的ValueMember。为了得到这个值我正在使用下面的代码,但它给出字段“BUSINESS_CODE”的字符串表示而不是值..请帮助我,以便获得所选项目的ValueMemeber ..

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

2 个答案:

答案 0 :(得分:0)

您要添加到列的“项目”没有“BUSINESS_CODE”列(实质上,您添加的项目只是一个字符串),因此不起作用。

您需要做的是分配包含多个列的项目。一个必须是BUSINESS_CODE列(因为这个列你想成为DataGridView中底层字段的值),另一个应该是一个显示列,它包含你所连接的值目前正在添加DisplayMemberValueMember)。

最简单的方法是创建一个类型化数据集,添加一个包含我所描述的两列的表,并用数据读取器中的数据填充表。

然后,将表添加为列的数据源。

答案 1 :(得分:-1)

您可以尝试在DataGridViewComboBoxCell集合中添加string而不是cmbBusCode.Items。然后,您可以在单元格中指定Value。我不确定这是否有效,但值得一试。

相关问题