2012-09-10 77 views
0

我目前在C#窗口应用程序中工作。在那里我使用DataGridView中的数据网格视图组合框。单击下拉框时,它会显示名称字段,如果我从下拉框中选择名称字段,它会在DataGridView ComboBox中显示值成员值。为什么DataGridView ComboBox显示ValueMember值?

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

在databindindcomplete功能我定义的组合框的值:

((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
Ramesh
Rani

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

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

+0

哪种类型的'objDBContext.Stu_student'? –

回答

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

,我建立了我对ComboBox这样的结合:

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

我得到我的学生姓名在下拉列表中,当我选择一个时,所选的姓名出现在单元格中。

+0

谢谢你的回答,现在我在ComboBox文本中获得了显示成员。 – Vinoth

+0

太好了。很高兴有帮助。 – itsmatt