我的datagridview包含学生信息,包括他们的班级(1A,1B,1C,2A,2B,2C)。现在我想在datagridview上面添加组合框,以便根据组合框选择过滤哪个类将在datagridview上显示。 这是我表单上的代码:
private void frmdbStudent_Load(object sender, EventArgs e)
{
db = new StudentSMSEntities();
studenttableBindingSource.DataSource = db.studenttable.ToList();
classBindingSource.DataSource = db.class.ToList();
GenderBindingSource.DataSource = db.gender.ToList();
religionBindingSource.DataSource = db.religion.ToList();
dataGridViewstudent.DataSource = db.studenttable.ToList();
count();
cboClassList.DataSource = db.Class.ToList();//combobox
这是组合框的代码:
private void cboDaftarKelas_SelectedIndexChanged(object sender, EventArgs e)
{
dataGridViewStudent.DataSource = db.studenttable.Where(stdnt => stdnt.ClassId == cboClassList.SelectedIndex).ToList();
}
代码有效,但是当选择1A级时,datagridview什么都没有显示,当我选择1B级时,datagridview显示来自1A级的学生,依此类推。我想知道为什么会这样,我试图解决这个问题问题好几个小时但仍无法找到解决方案。
答案 0 :(得分:0)
当您将Class
列表绑定到组合框DataSource
时,设置组合框的DisplayMember
和ValueMember
,如下所示
cboClassList.DataSource = db.Class.ToList();
cboClassList.DisplayMember = "Name"; // value is an example
cboClassList.ValueMember = "Id"; // value is an example
然后在过滤网格视图数据源时执行以下操作
dataGridViewStudent.DataSource = db.studenttable.Where(stdnt => stdnt.ClassId == (int) cboClassList.SelectedValue).ToList();
或者获取所选项目并将其投放到Class
课程并使用其Id
字段
dataGridViewStudent.DataSource = db.studenttable.Where(stdnt => stdnt.ClassId == ((Class) cboClassList.SelectedItem).Id).ToList();