Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.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#_Algorithm_Datatable_Datagridview_Visibility - Fatal编程技术网

C# 当列值等于特定值时,如何隐藏datagridview行

C# 当列值等于特定值时,如何隐藏datagridview行,c#,algorithm,datatable,datagridview,visibility,C#,Algorithm,Datatable,Datagridview,Visibility,那么比如说, 我有一个datagridview,它绑定到一个datatable: A. B C 1. 4. 7. 2. 5. 8. 3. 6. 9 这要简单得多。对于像这样绑定的datagridview: myDgv.DataSource = dt; dt.DefaultView.RowFilter = "[B] = 5"; //only show rows where B is 5 我们可以像这样动态过滤dgv: myDgv.DataSource = dt; dt.D

那么比如说,

我有一个datagridview,它绑定到一个datatable:

A. B C 1. 4. 7. 2. 5. 8. 3. 6. 9
这要简单得多。对于像这样绑定的datagridview:

myDgv.DataSource = dt;
dt.DefaultView.RowFilter = "[B] = 5"; //only show rows where B is 5
我们可以像这样动态过滤dgv:

myDgv.DataSource = dt;
dt.DefaultView.RowFilter = "[B] = 5"; //only show rows where B is 5
当DGV的数据源设置为datatable时,它将绑定到由DefaultView属性导出的DataView,以便您可以更改视图的属性(如筛选和排序),并且它将影响DGV。您还可以选择基于表创建自己的DataView并将DGV绑定到该表。有关可在行筛选器中使用的语法的更多信息,请参阅

在处理绑定数据时,请尝试养成通过查看容器(datatable)来访问数据的习惯,而不是枚举DGV并从中提取值

您可能会发现将datatable绑定到BindingSource然后将BindingSource绑定到DGV更有用-BindingSource也有一个具有相同语法的筛选器属性,但也保留了当前行的概念/当用户更改DGV中的当前行时,BindingSource上的当前属性值会更改,使操作代码中的当前行更容易


您表示这都是在表单设计器中设置的,这意味着您的表单上有:

  • 名为xDataGridView的datagridview
  • 名为xBindingSource的绑定源
  • 称为xDataSet的数据集
  • bindingsource的DataSource设置为dataset,datamember设置为dataset中的表名,datagridview的DataSource设置为bindingsource
(我主要只是描述设置以确保其正确性)

您需要做的只是:

_xBindingSource.Filter = "[B] = 5";

如果我已经使用winforms对数据进行了绑定(我从工具箱中添加了datagridview,只是添加了bindingsource,所有这些都在winforms上,没有代码,然后我根据自己的意愿编辑了列),我应该创建一个新的“DataTable dt;”来使用此过滤器还是有其他方法?不,只使用winforms Designer为您制作的控件(如果您查看Form.Designer.cs,您将看到winforms Designer实际上所做的一切都是设置yourDatagridview.DataSource=yourBindingsource)。我将进行编辑谢谢您,我错过了绑定源具有筛选器属性的信息,它现在很有意义,因为它完成了这个技巧。