How to filter the DataGridView using ComboBox

北城余情 提交于 2019-12-28 07:07:09

问题


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.


回答1:


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;
}



回答2:


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();


来源:https://stackoverflow.com/questions/32422267/how-to-filter-the-datagridview-using-combobox

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!