我目前正在使用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值?
答案 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";
我在下拉列表中显示学生姓名,当我选择一个时,所选名称会显示在单元格中。