我有一个使用数据源和表适配器创建的DGV。在表adapdter中,我定义了两个参数来进行搜索。因此,我有了一个带有数据网格视图的WPF和两个文本框,我将使用它们进行搜索。
public partial class FormConsultaAdvogadosDS : Form
{
public FormConsultaAdvogadosDS()
{
InitializeComponent();
}
private void FormConsultaAdvogadosDS_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'dataSetAdvogados.Advogado' table. You can move, or remove it, as needed.
this.advogadoTableAdapter.Fill(this.dataSetAdvogados.Advogado);
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
try
{
this.advogadoTableAdapter.FillBy(this.dataSetAdvogados.Advogado, textBox1.Text);
}
catch (System.Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
try
{
this.advogadoTableAdapter.FillBy1(this.dataSetAdvogados.Advogado, textBox2.Text);
}
catch (System.Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}
}
}
这是我现在拥有的代码。我只用其中一个文本框进行过滤就可以了,过滤了就可以了。但是我真正需要的是第一个过滤器内部的过滤器。像第一次筛选的依赖。如果我在textbox1中插入文本“ ABC”,则显示的行将具有“ ABC”,然后,使用第一个过滤器,我需要优化在textbox2“ DEF”中的插入,但是它不起作用。它将进行新的搜索,而忽略了第一个过滤条件。有人能帮我吗?问候
筛选一个集合时,通常需要管理两个集合。一个是原始的未经过滤的集合,其中包含所有可用的值/项目,另一个是过滤的集合,其中仅包含与过滤条件匹配的项目。
如果有两个过滤器,则需要管理三个集合。一个是原始的未过滤集合,第二个是第一个过滤的集合,仅包含与第一个过滤条件匹配的项目,第三个是第二个过滤的集合,仅包含与第二个条件匹配的项目。
因此,如果不清楚,这是一个示例。在这种情况下,用户进入ABC
,第二个集合返回原始(完整)集合中与该搜索相匹配的所有项目string
。现在这是重要的部分。无需使用第二个过滤器再次过滤原始集合,我们需要过滤已被过滤的第二个集合ABC string
。
第三个集合是绑定到UI的数据,将仅显示同时满足两个过滤条件的原始集合中的项目。
更新>>>
再举一个例子,您可以LinQ
用来过滤第二个集合(已经被第一个条件过滤了):
ThirdCollection = new ObservableCollection<string>(SecondCollection.Where(i =>
SecondFilterConditionMethod(i)));
现在,此SecondFilterConditionMethod
方法可以包含任何类型的条件,只要它返回true
或即可false
:
private bool SecondFilterConditionMethod(string item)
{
// implement whatever filter condition here
return item.StartsWith("A");
}
现在您可能没有使用string
s,但是无论使用哪种数据类型,其想法都是一样的。还请查看我对“更改”组合框项目列表的回答,具体取决于此处的“堆栈溢出”中的“文本框文本”问题,以获取更多示例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句