首页 > 解决方案 > 使用 Combobox C# 导入后过滤 Datagridview

问题描述

我有一个 datagridview1,其中包含从 excel 文件导入的数据,有 12 列:日期、名称、活动、项目、时间、评论等。和 1000 行。我想要做的是仅在项目列中使用项目名称过滤所有项目。例如,我有支持作为(项目名称)我想显示所有列过滤支持行。我有组合框来选择我需要在此处过滤它的列(例如项目),我尝试使用此代码但它不起作用。任何人都可以帮助我请:谢谢!

private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e)
  {
    string projektItem = comboBox1.Items[comboBox1.SelectedIndex].ToString();
    if (projektItem == "Project") {
        foreach (DataRow dataRow in dataGridView1.Rows)
        {
            StringBuilder filter = new StringBuilder();

            for (int i = 0; i < dataGridView1.Columns.Count - 1; i++)
            {
                filter.Append(dataRow[i].ToString());
                filter.Append("\t");
            }
            dataGridView1.DataSource = filter.ToString();
        }


    if (projektItem == "Name") {
    }
    if (projektItem == "Aktivity") {
    }


}

标签: c#.netfiltercombobox

解决方案


如果我理解正确,您正在使用组合框来选择要过滤的列。

在 dataGridView 中过滤数据的一种简单方法是执行以下操作:

  1. 获取包含您要显示的所有信息的 DataTable。

  2. 将 DataTable 转换为 DataView

  3. 将DataView的RowFilter属性改为,例如“Name = sth”

  4. 应用过滤器后,将 DataView 转换回 DataTable

  5. 使用该 DataTable 作为 DataGridView 的源

我喜欢的是 RowFilter 允许您以与 SQL WHERE 子句非常相似的方式进行过滤


推荐阅读