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. |