oscar scott Ответов: 0

Установите datatable.defaultview.rowfilter затем определить, какие строки показывают, и спрятаны?


У меня есть DataTable, привязанный к DataGridView. DataTable имеет логический столбец, который является столбцом checkbox в DataGridView. Пользователю разрешено фильтровать DataGridView и когда я устанавливаю DataTable.DefaultView.RowFilter он правильно показывает и скрывает соответствующие строки. Что мне нужно сделать, так это снять галочку с любой строки, которая была скрыта. Я делаю выбор Linq, чтобы получить проверенные строки, и мне нужно снять все скрытые строки. Как узнать, является ли строка частью фильтра или нет?

dtBoundDataSource is set and bound to the datagridview above

private void UnselectFilteredRows()
{
    if(dtBoundDataSource != null && dtBoundDataSource.Rows.Count > 0)
    {
        var checkedRows = from cRow in dtBoundDataSource.AsEnumerable()
                          where cRow.Field<bool>(checkedColumnName) == true
                          select cRow;
        
        foreach (var row in checkedRows)
        {
            if(row) //this is where i need to check if the row is visible or hidden
                row.SetField(checkedColumnName, false);
        }
    }
}


Заранее спасибо

Что я уже пробовал:

Я попытался получить DataView с фильтром NOT, и он не возвращает никаких строк. Я пробовал использовать rowstate, но это если строка добавляется, изменяется, удаляется и т. д. Кажется, я не могу найти настройку, которая показывает, отфильтрована она или нет.

0 Ответов