如何使用ComboBox过滤DataGridView

我需要帮助使用ComboBox过滤我的DataGridView

这是我的显示代码

 cm = new SqlCommand(); cn = new SqlConnection(lgn.connections); cn.Open(); cm.Connection = cn; query = "Select * from Trails"; cm.CommandText = query; SqlDataAdapter dar = new SqlDataAdapter(cm); DataTable dt = new DataTable(); dar.Fill(dt); dataGridView1.DataSource = dt; dataGridView1.Columns[0].Width = 0; dataGridView1.Columns[1].Width = 130; dataGridView1.Columns[2].Width = 100; dataGridView1.Columns[3].Width = 360; dataGridView1.Columns[4].Width = 130; this.dataGridView1.Columns[0].Visible = false; 

原始数据:

 ID | TRANSACTYPE | DESCRIPTION | AUTHORIZED BY ----------------------------------------------- 1 | LOGIN | blah blah | BOB 2 | LOGOUT | blah blah | BOB 3 | LOGIN | blah blah | TIM 4 | LOGOUT | blah blah | KURT 

我有一个名为cboFilter ComboBox ,如果我将索引更改为LOGIN ,那么将在dataGridView1上显示的数据只是LOGIN。

试试这个:

 DataTable dt = new DataTable(); private void cboFilter_SelectedIndexChanged(object sender, EventArgs e) { DataView dv = dt.DefaultView; dv.RowFilter = string.Format("TRANSACTYPE LIKE '%{0}%'", cboFilter.SelectedItem.ToString()); dataGridView1.DataSource = dv; } 

如果你需要DataGridView数据源总是像我的情况一样是DataTable。

  DataTable dt = (DataTable)dgv.DataSource; dgv.DataSource = dt.Select("IsActive = 1").CopyToDataTable();