SandGrid is a powerful, versatile list control capable of displaying data in tabular and hierarchical form. It was designed from the ground up to support trees of items and to be truly extensible. Because of its special architecture it offers a powerful replacement for the ListView, TreeView and DataGridView controls - offering more customization options and a consistent development experience.
Data in a SandGrid control can come from many sources - it operates in both bound and unbound states without compromising on features in either mode of operation. It complies with the standard Windows Forms databinding model and understands data sources from the simple IList to the advanced IBindingListView. It also offers a powerful middle ground between bound and unbound operation with virtual rows, which give you the speed of only having your data in one location without sacrificing the flexibility of presentation.
Sorting and grouping are fundamental to data display and SandGrid fully supports both with an extensible, lightning-fast API. The grid will automatically enable sorting and grouping by any column when populated. When bound to data it will use the data's native sorting methods, and when unbound its own native sorting is used. You can even establish different sorting on different levels of data, when operating as a tree of nodes. Standard single-column as well as advanced multi-column sorting is supported. Grouping is automatically applied to the first level of sort, if enabled.
SandGrid ships with a number of specialized column and cell types for quickly integrating with different types of data. A DateTime column knows how to group date information in a user-friendly manner, and various image columns know how to translate a row of data into an image selection to display. A ProgressBar column can display progress for individual cells. It is easy to add your own columns and cells with their own distinct behavior and look and feel. Columns can be autosized based on their contents, based on the available screen space or set to fixed widths. Of course, the user can change column widths and SandGrid supports a mechanism to quickly serialize the state of any grid - including column widths, visibility, display order and sort state.
The SandGrid architecture is such that every element in the grid receives its own mouse commands and is responsible for its own painting. This design offers tremendous extensibility possibilities, and several features of the library itself take full advantage. A special kind of row allows you to nest another full-featured grid within itself, and of course this can be used recursively to represent trees of data with different schemas. This is best illustrated by binding to a hierarchical data source such as a DataSet with relations. Related views are automatically made available and can be expanded and explored. Nested grids are every bit as powerful as the top-level grid and have their own bindings, display, sorting and selection.
SandGrid is capable of displaying data from most sources in line with the look and feel of a variety of different common controls.
All features summarised here are explained in greater detail further down the page.
- Easily replaces the ListView, TreeView and DataGridView controls.
- Fast sorting (both single and multi-column supported).
- Outlook style grouping on the first level of sort.
- Full-featured independent nested grids.
- Use bound or unbound without sacrificing capabilities.
- Printable including Print Preview.
- Virtual rows bridge the gap between ease of binding and flexibility of static data.
- Supports both row and cell level selection, with configurable highlights.
- Optimized text display engine ensures very fast drawing.
- Pluggable renderer support for customised drawing of common elements.
- Editing support through an extensible editor framework.
- Export to HTML function.
- Grid lines in horizontal, vertical, or both directions.
- Automatic clipboard handling.
- Highly customizable and extensible.
NEW: Sprung column resizing improved; original setting of Width property is now maintained leading to greater precision.
NEW: MinimumWidth property is now respected for sprung columns.
FIX: It was possible with a combination of no live resize, scrolling and hidden columns to drag a column edge such that an exception would be thrown.
FIX: EmptyText was not displayed if rows were present but filtered out.
FIX: Invoking the UpDownEditor by starting to type would fail to relay the first typed character into the editor.