簡體   English   中英

在一個文本框中的兩列上過濾DataGridView

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM