使DataGridViewRow不可见的更快方法

我正在使用以下代码将一堆DataGridViewRow元素设置为不可见。 我使用的规则是检查关联数据源的布尔标志。 如果该标志为true,则将显示该行。 如果没有,它将是隐形的。

以下代码有效; 然而,它是通过消耗相当多的时间来实现的:

 CurrencyManager currencyManager = (CurrencyManager)BindingContext[dataGridView.DataSource]; currencyManager.SuspendBinding(); foreach (DataGridViewRow row in dataGridView.Rows) { if (!objectList.list[row.Index].Selected) { row.Visible = false; } } currencyManager.ResumeBinding(); 

有没有人有更好的解决方案? 我必须经历的对象列表越长,这个过程自然就越长。 我无法设置一系列单元格,因为布尔值可能不是连续的。

正如PraVn所说,你可以在使用datagridview之前简单地过滤。 如果您使用的是DataSet,DataTable或DataView,请执行以下操作:

 DataSet ds = new DataSet(); ds.Tables[0].DefaultView.RowFilter = "YourBooleanColumn = 1"; DataView dv = new DataView(); dv.RowFilter = "YourBooleanColumn = 1"; DataTable dt = new DataTable(); dt.RowFilter.DefaultView.RowFilter = "YourBooleanColumn = 1"; 

或者,您可以在数据库端过滤(如果有的话?)。 让我们知道您的数据源是什么,我将根据需要进行更新。 这是我能做的最好的!