在一个文本框中的两列上过滤DataGridView

时间:2015-09-23 06:09:04

标签: c# winforms datagridview textchanged

我正在处理一些数据,我从WebService获取列表并在DataGridView中显示它。 DataGridView包含4列:ID,Name,Surname和Permissions。我想在一个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中有两个人具有相同的名称时,它只会在用户输入时显示第一个人。

任何有助于修改我的代码的帮助都将非常感激。谢谢!

1 个答案:

答案 0 :(得分:2)

你可以这样做:

long length1 = new System.IO.FileInfo("fromFile").Length;

//code for moving file here

long length2;
do{
    length2 = new System.IO.FileInfo("toFile").Length;
}(while length1!=length2)