在datagridview
事件中,我试图过滤data table
内的exchange
内的数据,但是当我从datagridview
清除所有数据时,并没有
返回的是原始数据(我的意思是没有过滤器),它显示的是最后一个
数据过滤
最后一个问题是,在此link answer中使用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 :(得分: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
}
}
答案 1 :(得分: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;
}