Помогите с созданием фильтра для таблицы данных!

#c#

#c#

Вопрос:

Я хочу создать фильтр для фильтрации текста в таблице данных при вводе в текстовое поле. У меня есть два текстовых поля: одно для фильтрации текста, который я набираю, и одно для фильтрации текста, который я набираю. Я хочу, чтобы таблица данных обновлялась по мере ввода в любое из текстовых полей. Вот часть моего кода:

     private void txtFilterIn_TextChanged(object sender, TextChangedEventArgs e)
    {
        DataView dv = dgPortStatus.DataContext as DataView;
        if (dv != null)
        {
            if (dv.Table.TableName.ToUpper() == "PORTSTATUS")
            {
                FilterDataGrid(txtFilterIn.Text, txtFilterOut.Text, _dicPortStatus[cmbGroups.SelectedItem.ToString()]);
            }
        }

        List<QuarantineView> qvList = dgPortStatus.DataContext as List<QuarantineView>;
        if (qvList != null)
        {
            //Filter on quarantine manager
            FilterQuarantineViewList(qvList);
        }
    }

    private void btnFilterInClear_Click(object sender, RoutedEventArgs e)
    {
        txtFilterIn.Clear();
    }

    private void txtFilterOut_TextChanged(object sender, TextChangedEventArgs e)
    {
        DataView dv = dgPortStatus.DataContext as DataView;
        if (dv != null)
        {
            if (dv.Table.TableName.ToUpper() == "PORTSTATUS")
            {
                FilterDataGrid(txtFilterIn.Text, txtFilterOut.Text, _dicPortStatus[cmbGroups.SelectedItem.ToString()]);
            }
        }

        List<QuarantineView> qvList = dgPortStatus.DataContext as List<QuarantineView>;
        if (qvList != null)
        {
            //Filter on Quarantine Manager
            FilterQuarantineViewList(qvList);
        }
    }

    private void btnFilterOutClear_Click(object sender, RoutedEventArgs e)
    {
        txtFilterOut.Clear();
    }
  

И этот метод — то, куда должен перейти мой фильтр:

 private void FilterQuarantineViewList(List<QuarantineView> qvList)
{


}
  

Ответ №1:

     private void textBox1_TextChanged(object sender, EventArgs e)
    {
        foreach (DataGridViewRow r in dataGridView1.Rows)
        {
            r.Visible = false;
            foreach (DataGridViewCell c in r.Cells)
                if (c.Value.ToString().Contains(textBox1.Text))
                {
                    r.Visible = true;
                    break;
                }
        }
    }
  

Комментарии:

1. Если я сделаю это таким образом, то эта инструкция не будет работать: List<QuarantineView> qvList = dgPortStatus. DataContext в виде списка<Просмотр на карантине>; if (qvList != null) { //Фильтр в диспетчере карантина FilterQuarantineViewList(qvList);