【问题标题】:Why DataGridView ComboBox displays the ValueMember value?为什么 DataGridView ComboBox 显示 ValueMember 值?
【发布时间】:2012-09-10 13:38:35
【问题描述】:

我目前正在使用 C# 窗口应用程序。我在 DataGridView 中使用数据网格视图组合框。单击下拉框时会显示名称字段,如果我从下拉框中选择名称字段,则会在 DataGridView ComboBox 中显示值成员值。

为什么我没有在组合框中获得显示成员值?

在 databindindcomplete 函数中,我定义了 ComboBox 的值:

((DataGridViewComboBoxColumn)dgvItem_1.Columns["Student"]).DataSource = objDBContext.Stu_student;
((DataGridViewComboBoxColumn)dgvItem_1.Columns["Student"]).DisplayMember = "STUDENT_NAME";
((DataGridViewComboBoxColumn)dgvItem_1.Columns["Student"]).ValueMember = "STUDENT_ID";

如果我在下拉列表中显示的 ComboBox 中选择一个值

名称
-----
拉贾
拉梅什
拉尼

如果我在列表中选择 Raja,ComboBox 会在 ComboBox 中显示相应的 STUDENT_ID。但我想在 ComboBox 中显示学生姓名。

谁能告诉我为什么我在 DataGridView ComboBox 中获得 ValueMember 值?

【问题讨论】:

  • objDBContext.Stu_student的类型是什么?

标签: winforms c#-4.0 datagridview datagridcomboboxcolumn


【解决方案1】:

所以在我的简单示例中,我有一个 Student 类,如下所示:

public class Student
{
    public string Name { get; private set; }
    public int StudentId{ get; private set; }
    public Student(string name, int studentId)
    {
        Name = name;
        StudentId= studentId;
    }

    private static readonly List<Student> students = new List<Student>
    {
        { new Student("Chuck", 1) },
        { new Student("Bob", 2) }
    };

    public static List<Student> GetStudents()
    {
        return students ;
    }
}

然后我像这样为组合框设置绑定:

        DataGridViewComboBoxColumn comboBoxColumn = (DataGridViewComboBoxColumn)dataGridView1.Columns[0];
        comboBoxColumn .DataSource = Student.GetStudents();
        comboBoxColumn .DisplayMember = "Name";  
        comboBoxColumn .ValueMember = "StudentId";        

我在下拉列表中获得我的学生姓名,当我选择一个时,所选姓名会显示在单元格中。

【讨论】:

  • 感谢您的回答,现在我在组合框文本中获得了显示成员。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-18
  • 1970-01-01
  • 2017-11-30
  • 2021-10-13
相关资源
最近更新 更多