When AutoFilterManager is attached to an iGrid control, the target grid automatically displays drop-down filter buttons in its column headers. These buttons are used to open the autofilter dialog (also known as "filter box") to define various column filters.
The filter button in a column header indicates whether a filter is defined for the column with a special funnel icon displayed next to the down arrow glyph. The effective filter criteria can be viewed in the tooltip displayed for the filter button without opening the autofilter dialog:
The filter box is also used to perform such operations with the whole grid filter like saving to or restoring from a file, or clearing filters from all columns. No additional controls appear in the target grid for these functions not to overburden the user interface.
All operations in the filter box can be performed from the keyboard, and even the control positions and their base classes are optimized for keyboard operations. A column's filter box itself can be opened from the grid using any key or key combination defined by the developer.
The AutoFilterManager filter box is resizable so you can grab and drag its edges to get the best size. It also has an optional title bar which can be used to drag the entire filter box to a new position to see all cell values in the filtered column.
The filter box has the Apply button one can use to adjust filter parameters and see the result of filtering in the target grid without closing and reopening the filter box over and over again.
AutoFilterManager works with all basic data types like numbers, dates and strings, but can be also used to process all other data types like enumeration values and even custom objects. All iGrid cell types,normal text cells, combo box cells and check box ones, are supported. AutoFilterManager also processes a mix of different cell types and data types within one column.
The check list of existing items to filter displays only the items which are visible in the grid when the filters in other columns are in effect. This can save a lot of time when working with huge grids as the user will work only with the reduced list of available items but not all possible items from the grid.
AutoFilterManager allows you not only tick existing column items to filter by them, but also define custom filter condition using major filter operators ("contains", "greater than", etc). The custom filter can be used together with ticked items in contrast to the autofilter functionality from Microsoft Office applications like Excel and Access, when you can either use the item list to filter or a custom filter criteria.
One of the limitations of the Microsoft Office autofilter is just 2 custom filter conditions. AutoFilterManager allows you to define an unlimited number of them!
AutoFilterManager has a simple but powerful set of custom filter operators. They are not specific to particular data types, and thus you can use string filters like "contains" to filter numeric or even date values. For more convenience, the custom operators are case-insensitive by default.
The performance of AutoFilterManager is good on huge grids which have 100,000 or even more rows. Its filter box item list is never empty like you can get it in Microsoft Access, when it is empty by default if the number of unique items in a column exceeds 1,000.
AutoFilterManager implements an option to apply the current filter to the target grid automatically as soon as any cell has been edited, or it can be delayed until the moment when the user issues the Reapply Filter command.
AutoFilterManager can be used to filter not only "flat" tables but data grouped by several columns as well.
All interface strings of AutoFilterManager are customizable. This means that you can both change them if required and localize them using the standard .NET localization technique which involves the Localizable and Language Windows Form properties. The colors and fonts of the filter box and filter button can be also adjusted to meet the application color scheme and style.
The filter for one column or the whole grid can be serialized to a Base-64 string which can be saved to and restored from any textual store (a file, registry, etc).