Banded Grid Views
- Jun 19, 2019
- 5 min to read
| Banded Grid View (BandedGridView) displays data in a tabular form and organizes columns into bands. Advanced Banded View (AdvBandedGridView) does the same and additionally supports complex layouts of data cells.
Demo: Banded Views |
#Bands and Columns
BandedGridView and AdvBandedGridView Views feature bands - stripes that organize grid columns into categories.
Columns in banded Views are instances of the BandedGridColumn class and inherit most of their settings from the parent GridColumn class.
#Add, Remove, Reorder and Modify Bands
Run the Grid Designer and switch to the "Bands" tab. This tab has buttons to add and remove bands, and a property grid to modify band settings. You can also re-arrange bands by dragging them.
In code, create GridBand objects and place them to the BandedGridView.Bands collection.
Related API
-
BandedGridView.Bands - Provides access to the root band collection..
-
GridBandCollection.MoveTo - Moves a band to a new position among other bands..
#Add Columns to Bands
At design time, drag a column and drop it below a band.
In code, either access the band GridBand.Columns collection and call its "Add", "AddRange" and "Insert" methods, or specify the BandedGridColumn.OwnerBand property for a column.
gridBand2.Columns.Add(colFreight);
//or
colFreight.OwnerBand = gridBand2;
Related API
-
GridBand.Columns - Provides access to columns owned by the band..
-
GridBandColumnCollection.MoveTo - Moves a column to a new position within the current band..
-
BandedGridColumn.OwnerBand - Gets or sets a column's parent band.
#Multi-Level Bands
It is possible to stack bands below bands, forming a multi-level band hierarchy.
To do this at design time, drag and drop bands in the Grid Designer's "Bands" tab. In code, place child bands into parent bands' GridBand.Children collections. To retrieve a parent band, use the GridBand.ParentBand property.
//organize bands 2 and 3 under the first one
gridBand2.ParentBand.Children.Add(gridBand3);
//or
#Band Headers
Use the following API to modify band headers.
-
Specifies the band text.
-
Specifies the band icon.
-
BandedGridView.MinBandPanelRowCount | BandedGridView.BandPanelRowHeight | GridBand.RowCount | GridBand.AutoFillDown
These properties specify band heights. Use the MinBandPanelRowCount and BandPanelRowHeight properties to set the initial number of band rows and these rows' heights. Then, you can stretch a band vertically across multiple rows by setting its RowCount property. If the AutoFillDown setting is enabled, a band automatically stretches vertically to consume any available space below.
-
BandedViewAppearances.BandPanel | GridBand.AppearanceHeader
Provide access to common and individual appearance settings, applied to band headers.
#Fixed Bands
Similarly to columns, you can anchor bands to left and right sides of a View. Such bands are called fixed and remain in place as end-users scroll through the View.
Related API
-
GridBand.Fixed - anchors a band to either side of a View.
-
GridView.FixedLineWidth - specifies the width of a line that delimits fixed bands from regular ones.
#Column Layout in Advanced Banded Views
In an Advanced Banded View, a single row can display vertically stacked cells that belong to different columns. The figure below is a screenshot of the Banded Views demo with eight columns stacked into four rows with the "Performance" band above them.
At design time, you can arrange columns by dragging them directly on the form surface.
Related API
-
BandedGridColumn.RowIndex - Places a column into a specific row.
-
BandedGridColumn.RowCount - Specifies a row span, allowing a column to stretch across multiple rows.
-
BandedGridColumn.OwnerBand - Gets or sets a column's parent band.
-
AdvBandedGridView.SetColumnPosition - Moves a column to the specified position among visible columns belonging to the same band.
-
BandedGridColumn.AutoFillDown - Allows a column to automatically fill available space below.
-
BandedGridColumn.ColIndex - A read-only property that returns the position of this column within a parent band row.
using DevExpress.XtraGrid.Views.BandedGrid;
// assigning columns to bands
colHP.OwnerBand = bandPerfomancel;
colCyl.OwnerBand = bandPerfomancel;
colCapacity.OwnerBand = bandPerfomancel;
colGear.OwnerBand = bandPerfomancel;
colImage.OwnerBand = bandPicture;
// changing the columns layout within bands
AdvBandedGridView View = colHP.View
view.SetColumnPosition(colHP, 0, 0);
view.SetColumnPosition(colCyl, 0, 1);
view.SetColumnPosition(colCapacity, 1, 0);
view.SetColumnPosition(colGear, 1, 1);
view.SetColumnPosition(colImage, 0, 0);
// forcing the Image column to stretch its header if needed
colImage.AutoFillDown = true;
#End-User Customization
At runtime, end-users can drag-and-drop columns and bands to customize the layout as their needs dictate. It is also possible to hide and restore bands at runtime by calling the "Customization" dialog.
Related API
-
OptionsBand.AllowSize, BandedGridOptionsCustomization.AllowBandResizing - prevent users from resizing a specific band or all bands owned by this View.
-
OptionsBand.AllowMove, BandedGridOptionsCustomization.AllowBandMoving - prevent users from re-arranging bands.
-
GridOptionsCustomization.AllowQuickHideColumns - gets or sets whether or not users can hide a column or a band by dragging it away from the column header panel.
-
BandedGridOptionsCustomization.AllowChangeBandParent, BandedGridOptionsCustomization.AllowChangeColumnParent - specify whether or not bands and columns can be moved outside their parent bands.
-
OptionsBand.ShowInCustomizationForm, BandedGridOptionsCustomization.ShowBandsInCustomizationForm - allow you to hide specific bands (or all of them) from the Customization dialog.
SEE ALSO
Get Started With Data Grid and Views
Example
The following example replaces the existing top level View with a BandedGridView, and adds a band and column to the View.
using DevExpress.XtraGrid.Views.BandedGrid;
//Dispose of the old view
gridControl1.MainView.Dispose();
//Create a Banded Grid View
BandedGridView bandedView = new BandedGridView(gridControl1);
gridControl1.MainView = bandedView;
//Add one band and one column to the view
GridBand band = bandedView.Bands.AddBand("General");
BandedGridColumn column = (BandedGridColumn)bandedView.Columns.AddField("CustomerID");
column.OwnerBand = band;
column.Visible = true;
#Layout of Columns and Bands (in Grid Views and Banded Grid Views)
After grid columns are created, you may want to customize the layout of columns (and bands in Banded Views) in a custom manner. This section describes basic customization capabilities available for Grid and Banded Grid View types at design time. All these actions can be replicated in code, if required, by adjusting corresponding View and column settings.
To learn about customizing other Views, refer to the following topics.
The GridView, BandedGridView and AdvBandedGridView support on-form design-time layout customization. You can re-order, resize and hide columns and bands using drag-and-drop.
The context menu, invoked on a column header click, allows you to sort and group data against a column, calculate the best column width and show the Column Chooser (Column/Band Chooser in Banded Views) - a floating panel that provides access to hidden columns (and bands in Banded Views). Hidden columns (and bands) can be restored from the Column/Band Chooser back to the View using drag-and-drop.
Instead of these design-time actions, you can modify the corresponding settings of grid columns and bands in the VS Property Grid (GridColumn.VisibleIndex, GridBand.VisibleIndex, GridColumn.Width, GridColumn.SortOrder, GridColumn.SortIndex, etc.).
For Banded Views (BandedGridView and AdvBandedGridView), use the Bands page of the data grid's Designer to add new bands and re-arrange bands and columns (you can also re-arrange bands and columns right on-the-form).