C# 选择仅查看DataGridView中的某些行
我有一组数据的DataGridView,我想选择只“查看”表单中参数的某些行,这会缩小列表,使我的选择更容易C# 选择仅查看DataGridView中的某些行,c#,datagridview,C#,Datagridview,我有一组数据的DataGridView,我想选择只“查看”表单中参数的某些行,这会缩小列表,使我的选择更容易 i.e. ComboBox has two choices -> "aaa" and "bbb" ===== Column1 | Column 2 aaa | 123 aaa | 234 bbb | 345 bbb | 456 aaa | 567 bbb | 678 选择组合框为“aaa”后,我应该会得到结果 Column1
i.e. ComboBox has two choices -> "aaa" and "bbb"
=====
Column1 | Column 2
aaa | 123
aaa | 234
bbb | 345
bbb | 456
aaa | 567
bbb | 678
选择组合框为“aaa”后,我应该会得到结果
Column1 | Column 2
aaa | 123
aaa | 234
aaa | 567
这应该允许我单击该行,将该行中的信息转换为单独的表单
但原始数据必须保持不变。。我不知道;如果您不想更改它,只需以不同的方式查看它。如果您使用的是LINQ数据源,您可以根据combobox是否有选择进行筛选
var result = from i in MyDataContext select i.Col1, i.Col2
if (! String.IsNullOrEmpty(cbComboBox1.Text))
{
result = from i in result where i.Col1 == cbComboBox1.Text
select i;
}
如果您没有使用LINQ数据源,那么可以使用LINQ在indexchanged事件中使用它将过滤器应用于已经绑定的DataGridView。当您想要显示所有数据时,您还需要编写一些内容来再次删除过滤器
if (! string.IsNullOrEmpty(cbComboBox1.Text))
{
var result = from DataGridViewRow row in dgvData.Rows
where row.Cells["Column1"].Value as string != cbComboBox1.Text
select row.Index;
foreach (var i in result)
{
dgvData.Rows[i].Visible = false;
}
}