我有一个dataGridView包含学生信息(类,性别,出生日期,父母姓名等)datagridview被绑定到sql server对象数据源。我想在datagridview上面添加组合框来根据学生类过滤datagridview,所以当用户选择某个类(例如IIA类)时,datagridview只显示来自IIA类的学生。 这是我的代码:
private void frmdbSiswa_Load(object sender, EventArgs e)
{
db = new SiswaSMSEntities();
tabelSiswaBindingSource.DataSource = db.Tabel_Siswa.ToList();
kelasBindingSource.DataSource = db.Kelas.ToList();
jenisKelaminBindingSource.DataSource = db.Jenis_Kelamin.ToList();
agamaSiswaBindingSource.DataSource = db.Agama_Siswa.ToList();
dataGridViewSiswa.DataSource = db.Tabel_Siswa.ToList();//agardataselalutampil
cboKelas.DataSource = db.Kelas.ToList();
count();
}
以下是搜索数据的代码:
enter code he private void txtCariNama_TextChanged(object sender, EventArgs e)
{
dataGridViewSiswa.DataSource = db.Tabel_Siswa.Where(x => x.NamaSiswa.Contains(txtCariNama.Text)).ToList();
}
此代码有效。我只需输入他们的姓名即可快速搜索学生。
以下是过滤datagridview的代码:
private void cboKelas_SelectedIndexChanged(object sender, EventArgs e)
{
dataGridViewSiswa.DataSource = db.Tabel_Siswa.Where(x => x.IdKelas == cboKelas.SelectedIndex).ToList();
}
此代码确实有效,但问题是当我选择类IA(Id 1)时,datagridview什么也没显示,当我选择IB类(Id 2)时,datagridview显示来自IA类的学生。当我选择第一个班级image 1时,datagridview什么都没显示。当我选择第二个班级Image 2时,datagridview显示头等舱的学生。 所以谁知道我做错了什么?
答案 0 :(得分:0)
那么使用存储过程来执行此过程又如何创建存储过程并构建您的查询以作为参数执行包含您将其放在组合框中的组的名称,然后写入很多条件内的条件组合框SelectedIndexChanged事件。最后检查组名并将其作为参数发送到存储过程...
// 1 - 创建存储过程
Create proc CheckClass
@ClassID
as
Select * from TableName
where ClassID = @ClassID`
First ClassID属于表中的字段,第二个属于参数,因此它的简单存储过程不包含更多信息。 如果您有一个数据访问层,只需构建您的类进行检查并输入您的if条件。