过滤DataGridView中的相关数据

本文关键字:数据 DataGridView 过滤 | 更新日期: 2023-09-27 18:04:25

我有一个DataGridView,它从类似于此设置的几个表中提取数据。效果很好。很好的帖子和回答。继续那篇文章中的例子,我现在想创建一个过滤器,通过在帐户描述中使用LIKE参数来产生适用于特定帐户的DataGridView中的所有事务。

我有一个解决方案,通过检查帐户表的描述和获得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;

这可以工作,但是很麻烦。如果有办法的话,我宁愿通过绑定来实现。

过滤DataGridView中的相关数据

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

我不相信有一种方法可以直接使用数据绑定做到这一点。

我把这个解决方案作为对@CodeBlend评论的回应。