【问题标题】:c# Get DatagridviewComboBoxCell's Selected Valuec# 获取 DatagridviewComboBoxCell 的选定值
【发布时间】:2016-12-15 19:10:39
【问题描述】:

我正在构建一个具有DataGridView 的 Winforms 应用程序。 DataGridView 未绑定到数据源。我的网格上有一个comboboxColumn,我正在使用datatable 填充它。

当我尝试检索 comboBoxCell 的 selectedValue 时,它​​给出的是第一个匹配的值,而不是确切的选定值。

Convert.ToString((datagridview1.Rows[i].Cells["columnName"] as DataGridViewComboBoxCell).Value)

例如, 组合框数据表是

DisplayMember 值成员 橙1111 苹果2222 香蕉3333 苹果 4444 番石榴 5555

现在,如果我选择 ID 为 4444 的 Apple,上面的代码将获得 ID 为 2222 的 Apple。

我尝试执行下面链接中给出的步骤,但这是给出索引而不是值。

https://stackoverflow.com/a/30157754/3619679

【问题讨论】:

  • 如果你只是打电话给DataGridView1.Rows[i].Cells["columnName"].Value。但是你的代码看起来也不错。只是为了测试。我总是按照我写的那样使用。也许在这种情况下它会起作用。并确保您输入ValueMember
  • 是的,我试过了。但是,如果存在具有不同 ValueMember ID 的重复值,它会给出组合框列表中的第一个值,而不是实际选择的值。

标签: c# winforms datagridview datagridviewcomboboxcell


【解决方案1】:

我能够在以下链接的帮助下解决问题

https://stackoverflow.com/a/30157754/3619679

SelectedItem 存储所选组合框项的正确值。

private void datagridview1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            if (cmbCombo != null)
            {
                DataRowView oDataRowView = cmbCombo.SelectedItem as DataRowView;
                string sValue = string.Empty;

                if (oDataRowView != null)
                {
                    sValue = oDataRowView.Row["ValueMemberID"] as string;
                }
                datagridview1[e.ColumnIndex, e.RowIndex].Tag = sValue;
            }

        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    • 2017-08-27
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多