C# 如何对列进行分组和行筛选
my datagridview从数据库获取it记录,如下所示: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
[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项,并基于此设置“知道要显示和隐藏哪些国家/地区”