3

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

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

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

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

4

3 回答 3

2

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

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();
于 2012-04-13T09:07:38.187 回答
1

绑定控件时,是将它们绑定到 DefaultView 还是 DataTable?绑定到 DataTable 将永远不会显示您对 DefaultView 拥有的 RowFilter。

于 2013-08-04T19:18:42.653 回答
0

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

(dataGridViewMain.DataSource as DataSet).Tables[0].AcceptChanges();
dataGridViewMain.DataBind();
于 2012-04-13T09:07:42.710 回答