使DataGridView行不可见的更快方法

时间:2012-03-12 07:39:31

标签: c# datagridview invisible 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();

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

1 个答案:

答案 0 :(得分:1)

正如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";

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