C# 当列值等于特定值时,如何隐藏datagridview行
那么比如说, 我有一个datagridview,它绑定到一个datatable: A. B C 1. 4. 7. 2. 5. 8. 3. 6. 9C# 当列值等于特定值时,如何隐藏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:
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)。我将进行编辑谢谢您,我错过了绑定源具有筛选器属性的信息,它现在很有意义,因为它完成了这个技巧。