Reputation: 9
I need help on filtering my DataGridView
using ComboBox
Here's my display code
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;
RAW DATA:
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
I have ComboBox
named cboFilter
and if I changed the index to LOGIN
the data that will show on the dataGridView1
is only LOGINs.
Upvotes: 0
Views: 11806
Reputation: 155
If you need DataGridView
data source always to be a DataTable
as in my case.
DataTable dt = (DataTable)dgv.DataSource;
dgv.DataSource = dt.Select("IsActive = 1").CopyToDataTable();
Upvotes: 0
Reputation: 39976
Try this:
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;
}
Upvotes: 3