Я пытаюсь отфильтровать данные в 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);
}
}
Чтобы сбросить фильтр, вы должны установить свойство 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;
}
Добавьте 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
}
}