过滤DataGridView

时间:2012-04-13 08:58:55

标签: c# .net-4.0 ado.net datagridview rowfilter

我正在尝试过滤DataGridView,DataSource是一个DataSet。

所以我使用以下行来过滤网格:

DataTable dt = (dataGridViewMain.DataSource as DataSet).Tables[0];
dt.DefaultView.RowFilter = "CustomerName = 'My Customer'";

但是网格不会被过滤,所有行仍然会显示。我错过了什么?

3 个答案:

答案 0 :(得分:2)

然后你需要重新绑定网格。我建议你调用函数数据获取数据集,然后应用rowfilter:

var view=GetDataSet().Tables[0].DefaultView
view.RowFilter = "CustomerName = 'My Customer'";
dataGridViewMain.DataSource=view;
dataGridViewMain.DataBind();

否则你可能必须这样做:

var view=(dataGridViewMain.DataSource as DataSet).Tables[0].DefaultView
view.RowFilter = "CustomerName = 'My Customer'";
dataGridViewMain.DataSource=view;
dataGridViewMain.DataBind();

答案 1 :(得分:1)

绑定控件时,是否将它们绑定到DefaultView或DataTable?绑定到DataTable永远不会显示针对DefaultView的RowFilter。

答案 2 :(得分:0)

尝试将rowstate过滤器设置为DataViewRowState.ModifiedCurrent.Also接受数据表的更改并重新绑定数据网格。

(dataGridViewMain.DataSource as DataSet).Tables[0].AcceptChanges();
dataGridViewMain.DataBind();