如何使用ComboBox过滤datagridview

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用ComboBox过滤datagridview相关的知识,希望对你有一定的参考价值。

我有一个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什么都没显示。当我选择第二个classImage 2时,datagridview显示来自头等舱的学生。所以谁知道我做错了什么?

答案

那么使用存储过程来执行此过程又如何创建存储过程并构建查询以作为参数执行包含您将其放在组合框中的组的名称,然后在组合事件内写入大量if条件Box SelectedIndexChanged。最后检查组名并将其作为参数发送到存储过程...

// 1 - 创建存储过程

Create proc CheckClass 
 @ClassID 
 as
 Select * from TableName 
 where ClassID = @ClassID`

First ClassID属于表中的字段,第二个属于参数,因此它只是存储过程不包含更多信息。如果您有一个数据访问层,只需构建您的类进行检查并输入您的if条件。

以上是关于如何使用ComboBox过滤datagridview的主要内容,如果未能解决你的问题,请参考以下文章

ComboBox过滤

如何设计ComboBox的过滤功能,直接能模糊查找

使用 ComboBox 作为查询条件 - 布尔值

MS Access Form:使用第一个 Combobox 的值来过滤第二个 Combobox 的选项?

怎么样实现combobox输入关键字,过滤数据

EasyUI combobox下拉列表实现搜索过滤(模糊匹配)