我有一组数据的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
这应该允许我单击该行以将该行的信息转换为单独的形式..
但原始数据必须保持不变..我不想改变它,只是以不同方式查看..
答案 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;
}
}