选择仅查看DataGridView中的某些行

时间:2013-05-18 11:58:09

标签: 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

选择ComboBox为" aaa"后,我应该得到结果

Column1 | Column 2
aaa     | 123
aaa     | 234
aaa     | 567

这应该允许我单击该行以将该行的信息转换为单独的形式..

但原始数据必须保持不变..我不想改变它,只是以不同方式查看..

1 个答案:

答案 0 :(得分:0)

如果您使用的是LINQ数据源,则可以根据组合框是否有选择进行过滤。

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将过滤器应用于已经数据绑定的DataGridView,方法是在indexchanged事件中使用它。当您想要显示所有数据时,您还需要编写一些内容来再次删除过滤器。

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;
    }
}