Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 选择仅查看DataGridView中的某些行_C#_Datagridview - Fatal编程技术网

C# 选择仅查看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

我有一组数据的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 | 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;
    }
}