Фильтрация данных внутри `datagridview`, ограниченного из` datatable`

2

Я пытаюсь отфильтровать данные в datagridview ограниченные data table как показано ниже в событии exchange, но когда я очищаю все данные из datagridview, к ним не возвращаются исходные данные (я имею в виду без фильтров), все, что он показывает, это последний фильтр данных

последний вопрос - фильтр, использующий метод LINQ в этой ссылке, лучше, чем тот, который я использую?

потому что я использую около 7 textbox качестве фильтров

    private void TB_FirstName_TextChanged(object sender, EventArgs e)
    {
        if (!string.IsNullOrWhiteSpace(TB_FirstName.Text))
        {
            (DGV_SearchResult.DataSource as DataTable).DefaultView.RowFilter = string.Format("NAM LIKE '%{0}%'", TB_FirstName.Text);
        }
    }
  • 0
    Лучше всего вставить BindingSource!
Теги:
winforms
datagridview
.net-4.0

2 ответа

1
Лучший ответ

Чтобы сбросить фильтр, вы должны установить свойство RowFilter в string.Empty или null:

private void TB_FirstName_TextChanged(object sender, EventArgs e)
{
    var dt = DGV_SearchResult.DataSource as DataTable;
    if (!string.IsNullOrWhiteSpace(TB_FirstName.Text))
        dt.DefaultView.RowFilter = string.Format("NAM LIKE '%{0}%'", TB_FirstName.Text);
    else
        dt.DefaultView.RowFilter = string.Empty;
}
  • 0
    Я стараюсь и обратной связи спасибо за ваше время
2

Добавьте else для повторного восстановления источника данных, когда текстовое поле пустёт что-то вроде

private void TB_FirstName_TextChanged(object sender, EventArgs e)
{
    if (!string.IsNullOrWhiteSpace(TB_FirstName.Text))
        {
            (DGV_SearchResult.DataSource as DataTable).DefaultView.RowFilter = string.Format("NAM LIKE '%{0}%'", TB_FirstName.Text);
        }
    else
        { 
           // Load data again
        }
}
  • 0
    Ваше форматирование серьезно?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню