为什么DataGridView ComboBox显示ValueMember值?

时间:2012-09-10 13:38:36

标签: winforms c#-4.0 datagridview datagridcomboboxcolumn

我目前正在使用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值?

1 个答案:

答案 0 :(得分:1)

所以在我的简单示例中,我有一个看起来像的学生类:

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";        

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