Add outline by group rows or columns
To add outline on rows or columns:
sheet.AddOutline(RowOrColumn.Row, 3, 5); // group rows from 3, number of rows is 5 sheet.AddOutline(RowOrColumn.Column, 5, 2); // group columns
Note: AddOutline may throw the following exceptions:
- OutlineIntersectedException – when the outline to be added, intersects with another one which was already on the worksheet.
- OutlineAlreadyDefinedException – when the outline to be added, same to another one which was already on the worksheet.
- OutlineTooMuchException – when the number of levels of outline reached the maximum available levels 10.
- OutlineOutOfRangeException – when the position specified to create an outline, which outs of the available range of the worksheet. (p.s. since that outline needs a thumb for collapsing and expanding, the last row and last column on the worksheet cannot be grouped into any outlines.
Collapse and Expand outlines
AddOutline method returns the instance of an outline, which has two methods.
var outline = sheet.AddOutline(RowOrColumn.Row, 3, 5); outline.Collapse(); // collapse outline.Expand(); // expand
Or directly call
ExpandOutline method of the control, then pass the position to specify which outline should be changed.
sheet.CollapseOutline(RowOrColumn.Row, 3, 5); sheet.ExpandOutline(RowOrColumn.Row, 3, 5);
Note: These methods above may throw the
OutlineNotFoundException when no outline was found at the specified position (in this example, it must start at row 3, and the number of rows must be 5).
Remove outlines by ungrouping rows or columns
To remove an outline, use the
sheet.RemoveOutline(RowOrColumn.Row, 3, 5);
RemoveOutline may throw the
OutlineNotFoundException when no outline was found from the specified position.
There is another method
ClearOutlines which can be used to remove all outlines from a worksheet, Use
RowOrColumn enumerator to decide what type of outline should be removed.
Auto Collapse and Expanding
If an expanded outline, which attaching to (ending at) the row has been hidden, or height of the row has set to zero, the outline will be collapsed automatically. If any rows which are grouped by a collapsed outline is visible, or the height of row has set to non-zero, the outline will be expanded automatically. This behavior cannot be disabled, but the event of collapsing/expanding for outlines will be fired.
After adjusting the height of the rows:
If an outline, which attaches to the rows or columns are all removed, this outline will be removed automatically. This behavior cannot be disabled, but the event of
OutlineRemoved will be fired.
Event of outline
When an outline has been added or removed, the following two events of the worksheet will be fired.
sheet.OutlineAdded += (s, e) => MessageBox.Show( "outline added from " + e.Outline.Start + " to " + e.Outline.End); sheet.OutlineRemoved += (s, e) => MessageBox.Show( "outline removed from " + e.Outline.Start + " to " + e.Outline.End);
Since remove rows will automatically remove the outlines associated with the rows, the
OutlineRemoved event also will be raised.
After the code above executed, the message will be displayed:
outline removed from 5 to 3
Both instances of outline and worksheet provide the event to handle the operation of collapse/expand from an outline.
var outline = sheet.AddOutline(RowOrColumn.Column, 1, 3); // event from instance outline.BeforeCollapse += (s, e) => MessageBox.Show("before collapse"); outline.BeforeExpand += (s, e) => MessageBox.Show("before expand"); outline.AfterCollapse += (s, e) => MessageBox.Show("after collapse"); outline.AfterExpand += (s, e) => MessageBox.Show("after expand"); // event from control sheet.BeforeOutlineCollapse += (s, e) => MessageBox.Show("worksheet - before collapse"); sheet.AfterOutlineCollapse += (s, e) => MessageBox.Show("worksheet - after collapse"); sheet.BeforeOutlineExpand += (s, e) => MessageBox.Show("worksheet - before expand"); sheet.AfterOutlineExpand += (s, e) => MessageBox.Show("worksheet - after expand");
Like other before-event of ReoGrid, there is a property called
IsCancelled that can be set to true to prevent the action of event.
// prevent collapse or expand by set IsCancelled as true sheet.BeforeOutlineCollapse += (s, e) => e.IsCancelled = true;
For all the events of control, see Events.
Hide outline interface panel
It is possible to hide the user interface of outlines to prevent outline operations from end-user. By programming to access the instance of outline to perform actions such as collapsing or expanding.
// allow or not to show both row and column outlines sheet.SetSettings(ReoGridSettings.View_AllowShowOutlines, false); // add outline 1 and collapse it var outline1 = grid.AddOutline(RowOrColumn.Row, 1, 3); outline1.Collapse(); // add outline 2 and collapse it var outline2 = grid.AddOutline(RowOrColumn.Row, 5, 2); outline2.Collapse();
Anytime to show the outline interface panel, set the setting to true.
Learn about how to add check-boxes, see Built-in Cell Types.
HI! I see it is not possible to change outline ‘+’ grouping button place and grouping direction from down to top for rows and from right to left for columns (like “Summary columns to right of details” in MS Excel). Am I right ?
“Summary columns to right of details” in MS Excel? Can you provide URL about the feature in MS Excel?
I think it is important feature 🙂