[英]How to filter two columns with one TextBox - Filter in two columns in DataGridView slow down performance- Visual Basic
[英]Filtering DataGridView over two columns in one textbox
我正在處理從WebService列表中獲取的一些數據,並將其呈現在DataGridView中。 DataGridView包含4列:ID,名稱,姓氏和權限。 我想在一個textbox_TextChanged事件中過濾DataGridView元素。
關鍵是要按名稱搜索,然后在找到全名時,用戶輸入空格,然后按與該名稱匹配的姓搜索。
到目前為止,我已經完成了以下代碼:
private void textBoxSearch_TextChanged(object sender, EventArgs e)
{
newList.Clear();
newlist2.Clear();
search = textBoxSzukaj.Text;
try
{
foreach (localhost.Person item in listPerson.ToList())
{
if (item.name.Contains(search))
{
newList.Add(item);
dataGridViewOsob.DataSource = search == "" ? listPerson : newList;
if (search.Length == item.name.Length)
{
name = search;
abc = name + " ";
searchBySurname = true;
}
else
{
searchBySurname = false;
}
}
else
{
//dataGridViewPerson.DataSource = null;
}
}
if (searchBySurname == true)
{
if (search.Length > abc.Length)
{
searchBySurname = textBoxSearch.Text;
searchBySurname = search.Remove(0, abc.Length);
foreach (localhost.Person itemm in listPerson.ToList())
{
if (itemm.name == name)
{
if (itemm.surname.Contains(searchNazwisko))
{
if (searchNazwisko.Length > 0)
{
newList.Clear();
newlist2.Add(itemm);
dataGridViewPerson.DataSource = search == "" ? listPerson : newlist2;
}
else
{
}
}
else
{
}
}
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
問題在於,當用戶開始正確輸入名稱,然后在某個時候,他輸入了錯誤的名稱。 在這種情況下,DataGridView將顯示最后一個正確的匹配項。
另一個問題是,當DataGridView中有兩個人具有相同的名稱時,僅當用戶鍵入時才顯示第一個。
莫迪我的代碼的任何幫助將不勝感激。 謝謝!
您可以簡單地做到這一點:
dataGridViewPerson.DataSource = listPerson.ToList().Where(x => (x.name + " " + x.surname)
.Contains(textBoxSearch.Text)).ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.