1

朋友们,我在 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);

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

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

2 回答 2

0

您添加到该列的“项目”没有“BUSINESS_CODE”列(本质上,您添加的项目只是一个字符串),所以这不起作用。

您需要做的是分配包含多列的项目。一个必须是BUSINESS_CODE列(因为您希望此列成为 中基础字段的值DataGridView),另一个应该是包含您当前添加的连接值的显示列(DisplayMemberValueMember)。

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

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

于 2012-05-04T10:11:48.087 回答
-1

您可以尝试将 aDataGridViewComboBoxCell而不是 a添加stringcmbBusCode.Items集合中。然后您可以Value在单元格中指定。我不确定这是否可行,但值得一试。

于 2012-05-04T10:18:31.770 回答