过滤DataGridView中的相关数据

时间:2011-08-04 13:42:01

标签: c# datagridview filter

我有一个DataGridView,与this设置类似,从几个表中提取数据。它很棒。好帖子和答案。继续该帖子中的示例,我现在想要创建一个过滤器,通过在帐户说明中使用DataGridView参数,生成适用于特定帐户的LIKE中的所有交易。

我有一个解决方案,通过检查accounts表中的描述并获取IDAccount值然后在DataGridView过滤器中使用该值,但我希望有一种更自动化的方式使用绑定。

有什么想法吗?谢谢你的建议。

修改: 假设我有一个名为AccountDescriptionBox的TextBox控件,我希望能够做类似的事情

dataGridView1.Filter = string.Format("{0} LIKE '{1}'", "IDAccount", AccountDescriptionBox.Text);

显然,这不起作用,因为IDAccount是一个整数,而不是一个字符串。我上面提到的解决方案是

string filter = string.Empty;
Regex searchTerm = new Regex(Regex.Escape(AccountDescriptionBox.Text).Replace('\\', '.'), RegexOptions.IgnoreCase);
var accts = from acct in dataSet1.Accounts
            let matches = searchTerm.Matches(acct.Description)
            where matches.Count > 0
            select acct.ID;
for (int i; i < accts.Count() - 1; i++)
{
    filter += string.Format("IDAccount = {0} OR ",accts.ElementAt(i));
}
filter += string.Format("IDAccount = {0}",accts.Last());
dataGridView1.Filter = filter;

这很有效,但很麻烦。如果有办法,我宁愿通过绑定来做。

2 个答案:

答案 0 :(得分:1)

查看DataView类。它允许您对记录进行排序和过滤,并执行简单的类似SQL的操作。

答案 1 :(得分:-1)

我认为没有办法直接使用数据绑定。我将解决方案作为编辑发布,以回应@ CodeBlend的评论。