Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 筛选DataGridView_C#_.net 4.0_Ado.net_Datagridview_Rowfilter - Fatal编程技术网

C# 筛选DataGridView

C# 筛选DataGridView,c#,.net-4.0,ado.net,datagridview,rowfilter,C#,.net 4.0,Ado.net,Datagridview,Rowfilter,我试图过滤DataGridView,数据源是一个数据集 因此,我使用以下行来过滤网格: DataTable dt = (dataGridViewMain.DataSource as DataSet).Tables[0]; dt.DefaultView.RowFilter = "CustomerName = 'My Customer'"; 但是网格不会被过滤,所有的行仍然显示。我遗漏了什么?您需要重新绑定网格。我建议您调用函数data获取数据集,然后应用rowfilter: var view=G

我试图过滤DataGridView,数据源是一个数据集

因此,我使用以下行来过滤网格:

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

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

您需要重新绑定网格。我建议您调用函数data获取数据集,然后应用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();

尝试将rowstate筛选器设置为DataViewRowState.ModifiedCurrent。同时接受datatable的更改并重新绑定datagrid

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

绑定控件时,是将它们绑定到DefaultView还是DataTable?绑定到DataTable将永远不会显示针对DefaultView的行筛选器。

感谢您的回复。如果不重新绑定数据源,是否就没有办法做到这一点?我希望过滤器位于网格上方,并让用户在那里键入过滤器文本。但是当用户删除过滤器时,我希望在不返回数据库的情况下设置原始数据源。感谢将原始数据源设置回set RowStateFilter=DataViewRowState.OriginalRowsThanks以获取回复。因此,我尝试了以下代码:(dataGridViewMain.DataSource作为DataSet)。表[0]。DefaultView.RowFilter=“Asset\u No=”基类5';(dataGridViewMain.DataSource作为数据集)。表[0]。DefaultView.RowStateFilter=DataViewRowState.ModifiedCurrent;(dataGridViewMain.DataSource作为数据集)。表[0]。AcceptChanges();但是没有数据绑定方法。有机会举个完整的例子吗?ThanksdataGridViewMain.DataBind()不在那里??不,不在那里。我有数据绑定但没有数据绑定奇怪。你的控件是“asp:GridView”吗?不,它是C#DataGridView(来自System.Windows.Forms.DataGridView)这并没有解决我的问题