【问题标题】:How to filter the DataGridView using ComboBox如何使用 ComboBox 过滤 DataGridView
【发布时间】:2015-12-02 00:59:30
【问题描述】:

我需要有关使用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

我将ComboBox 命名为cboFilter,如果我将索引更改为LOGINdataGridView1 上将显示的数据只有登录。

【问题讨论】:

    标签: c# sql-server winforms filter combobox


    【解决方案1】:

    试试这个:

    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】:

      如果您需要 DataGridView 数据源始终是 DataTable,就像我的情况一样。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多