C# 如何对列进行分组和行筛选

C# 如何对列进行分组和行筛选,c#,winforms,datagridview,C#,Winforms,Datagridview,my datagridview从数据库获取it记录,如下所示: [Country] Gh Ng Sa Gm Sw Ru //If i select Africa in the combobox Gh Ng Sa // And if i select Europe Gm Sw Ru foreach (DataGridViewRow row in dataGridView1.Rows) { //search for identical

my datagridview从数据库获取it记录,如下所示:

[Country]     
  Gh
  Ng
  Sa
  Gm
  Sw
  Ru
//If i select Africa in the combobox
  Gh
  Ng
  Sa
// And if i select Europe
  Gm
  Sw
  Ru
foreach (DataGridViewRow row in dataGridView1.Rows)
{
  //search for identical value
  if (row.Cells[0].Value.ToString().Equals(searchValue))//searchvalue would be set using ComboBox.Text
  {
    dataGridView1.Rows[0].Visible = true;
  }
  //search for first art that contains search value
  else
  {
    dataGridView1.Rows[0].Visible = false;
  }
}
现在我想使用组合框筛选此列。我的组合框中有两个值 非洲和欧洲。我的期望是得到这样的东西:

[Country]     
  Gh
  Ng
  Sa
  Gm
  Sw
  Ru
//If i select Africa in the combobox
  Gh
  Ng
  Sa
// And if i select Europe
  Gm
  Sw
  Ru
foreach (DataGridViewRow row in dataGridView1.Rows)
{
  //search for identical value
  if (row.Cells[0].Value.ToString().Equals(searchValue))//searchvalue would be set using ComboBox.Text
  {
    dataGridView1.Rows[0].Visible = true;
  }
  //search for first art that contains search value
  else
  {
    dataGridView1.Rows[0].Visible = false;
  }
}
这是我目前的代码:

private void combobox1_SelectedIndexChanged(object sender, EventArgs e)
    {

            try
            {
                //Check an see what's in the dgv
          DataView dv = new DataView(dt);
          dv.RowFilter = "[Country]  LIKE '%" + combobox1.Text.Trim() + "%'";
          datagridview1.DataSource = dv;
            }
            catch (Exception)
            {
    MessageBox.Show("Column not found", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        }

如何对它们进行分组并实施它?

尝试以下方法:

[Country]     
  Gh
  Ng
  Sa
  Gm
  Sw
  Ru
//If i select Africa in the combobox
  Gh
  Ng
  Sa
// And if i select Europe
  Gm
  Sw
  Ru
foreach (DataGridViewRow row in dataGridView1.Rows)
{
  //search for identical value
  if (row.Cells[0].Value.ToString().Equals(searchValue))//searchvalue would be set using ComboBox.Text
  {
    dataGridView1.Rows[0].Visible = true;
  }
  //search for first art that contains search value
  else
  {
    dataGridView1.Rows[0].Visible = false;
  }
}

这可能不完全正确,因为我必须在没有编译器的情况下快速完成此操作

如果您只想显示组合框中指定的国家,则可以隐藏所有其他行。要检测应该显示哪些,可以向表中添加一行,该行的值与combobox的值相同。确保每个国家都加入到它所在的国家中。然后显示/隐藏行accordingly@maam27. 你能给我举个实际的例子吗?不知怎么的,我在我的一个项目中做了一个datagrid搜索,所以我应该能够在示例中对此进行一些更改,但为了使其正常工作,您需要向数据库中添加一个新列,并将其命名为
大陆
,或者您希望对其进行分组的内容。如果需要,可以显示该列,但该列将决定是否显示该行not@maam27. 难道我不能在try部分中使用IF语句并指示它查看国家栏并将快捷方式分组到非洲和欧洲吗?因此,如果我在组合框中选择,它只会给我相关的,问题是我在数据库中得到的记录太多了。新建列将非常耗时。[4个表,每个表有超过1000条记录]:(我想,如果有一个新的列,代码可能会更少,但您可以更改我作为awnser发布的foreach循环中的逻辑,以查看选择了什么combobox项,并基于此设置“知道要显示和隐藏哪些国家/地区”