gpt4 book ai didi

c# - 如何在 C# 中使用多个事件处理程序 text_changed?

转载 作者:太空宇宙 更新时间:2023-11-03 23:24:50 26 4
gpt4 key购买 nike

我有 3 个文本框:tbName、tbMiddleName 和 tbSurname。在它们下面我有网格,它返回所有来自 SqlServer 基地的人。我在谷歌上搜索了如何按姓名过滤这个人,并看到事件处理程序 text_changed 做了这件事。当我在 tbName 中输入一些名字时,它起作用了!我在 base 中有 130 个名字,当我输入“Mike”时,例如网格显示所有名字为 Mike - 12 的人。但问题是当我在 tbMiddleName 中输入“John”时,它取消了第一个过滤器并返回我所有的人中间名是“约翰”,但我只想要名字是“迈克”,中间名是“约翰”的人(它应该只返回一个人)。 tbSurname 也一样。

这是我的代码:

    private void tbName_TextChanged(object sender, EventArgs e)
{
if (String.IsNullOrEmpty(tbName.Text))
{
bsAllPeople.Filter = null;
}
else
{
bsAllPeople.Filter = "Name LIKE '%" + tbName.Text + "%'";
}

}

private void tbMiddleName_TextChanged(object sender, EventArgs e)
{
if (String.IsNullOrEmpty(tbSifraTransakcije.Text))
{
bsAllPeople.Filter = null;
}
else
{
bsAllPeople.Filter = "MiddleName LIKE '%" + tbMiddleName.Text + "%'";
}
}

private void tbSurname_TextChanged(object sender, EventArgs e)
{
if (String.IsNullOrEmpty(tbSurname.Text))
{
bsAllPeople.Filter = null;
}
else
{
bsAllPeople.Filter = "Surname LIKE '%" + tbSurname.Text + "%'";
}
}

最佳答案

只需创建另一个方法来处理过滤器。

public void Refilter()
{
bsAllPeople.Filter = $"Name LIKE '%{tbName.Text}%' AND MiddleName LIKE '%{tbMiddleName.Text}%' AND Surname LIKE '%{tbSurname.Text}%'";
}

然后像这样使用它

private void tbName_TextChanged(object sender, EventArgs e)
{
Refilter();
}

注意:请搜索Parameterize SQL Query, SQL Injection。

关于c# - 如何在 C# 中使用多个事件处理程序 text_changed?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34197066/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com