# Table of Contents Overview

The table of contents (TOC) provides a summary/overview of the report structure and a set of navigational links to report items in the rendered report, and displays the page numbers of the pages where these report items are located. The user can click the entries in the table of contents to navigate to the report page, which displays that item. The table of contents is part of the report and can be displayed before or after the report header/footer section. As such, it will be included in the page numbering of the report. The following image illustrates the table of contents section during design time and at run-time.

![A Preview image of how the TOC section appears in Design and in Run time](https://www.telerik.com/products/reporting/documentation/assets/b5810ac79bd6d6cfa997b3c063502c23/toc01.png)

## Configuring a TOC Section on the Report

The table of contents can be added to the report by enabling it from the report's context menu:

![A Preview image of how a TOC section can be added from the Report Context Menu](https://www.telerik.com/products/reporting/documentation/assets/6bf1d1efbaab7b41ae88220aedf5f182/tocreportcontextmenu.png)

> note The TOC section is designed to be displayed at the top/bottom of the entire report document. For that reason, the TOC section of the subreport is ignored.

### Structure

The position of the TOC section in the report can be controlled via the [Position](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.tocsection#Telerik_Reporting_TocSection_Position) property. This property can be switched between four different states, which place the TOC before or after the report header or the report footer section.

At run-time, the table of contents entries are defined by the [TocText](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.reportitembase#Telerik_Reporting_ReportItemBase_TocText) property of any report section/item/group. Valid values are static text, expressions, or text with embedded expressions.

The resulting text will be displayed in the corresponding TOC entry. To form a hierarchical structure of the TOC, you need to set the TocText property of the report groups, the CrossTab/Table groups, the Detail section, and the Report (useful for SubReports).

To add a report item to the TOC, you may use the [TocText](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.reportitembase#Telerik_Reporting_ReportItemBase_TocText) property of that item. However, note that all report items (except the Detail section and the Report itself) produce leaf nodes in the TOC.

The table of contents definition contains a title and a hierarchy of levels. The title text can be configured using the [Title](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.tocsection#Telerik_Reporting_TocSection_Title) property. Its style is controlled via the [TitleStyle](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.tocsection#Telerik_Reporting_TocSection_TitleStyle) property.

![A Preview image of the TOC Context Menu that appears when the section is right-clicked](https://www.telerik.com/products/reporting/documentation/assets/262582eec27687258f5a3b2b0a78dce5/toccontextmenu.png)

The [Levels](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.tocsection#Telerik_Reporting_TocSection_Levels) property contains the properties and styles for each TOC level.

The properties and styles of a particular level in the Levels collection will be applied only to TOC entries for report sections/items/groups having the same level.

> When using a Report Book to combine different reports, each separate TOC will be displayed as part of the report it belongs to. To display a single TOC for all of the reports in the Report Book, you need to configure a [Report Book Table of Contents](https://www.telerik.com/products/reporting/documentation/designing-reports/report-book/report-book-table-of-contents).

> note TOC navigational links are handled internally as [Bookmark Actions](https://www.telerik.com/products/reporting/documentation/interactivity/actions/bookmark-action). When the report item/section/group does not have a [BookmarkId](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.reportitembase#Telerik_Reporting_ReportItemBase_BookmarkId) value, a unique value will be automatically assigned to it at run-time. If you need to set the [BookmarkId](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.reportitembase#Telerik_Reporting_ReportItemBase_BookmarkId) value, make sure that it is unique in the scope of the whole report (report book); otherwise, the TOC navigational links may not work correctly.

### Hierarchy

#### Default TOC Hierarchy

The default hierarchy of levels corresponds to the hierarchical structure of the report sections, items, and groups for which the [TocText](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.reportitembase#Telerik_Reporting_ReportItemBase_TocText) property is set.

When the Report hierarchy is deeper (has more levels) than the number of levels defined in the [Levels](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.tocsection#Telerik_Reporting_TocSection_Levels) collection, the style of the last TOC level in the collection will be applied to the remaining TOC entries.

#### Controlled TOC Hierarchy

Starting with [Telerik Reporting 2026 Q1 (20.0.26.402)](https://www.telerik.com/support/whats-new/reporting/release-history/progress-telerik-reporting-2026-q1-\(20-0-26-402\)), you can explicitly set the level where report sections, items, and groups appear in the table of contents. This approach gives you direct control over the TOC structure instead of relying only on the report hierarchy.

Use the optional [TocLevel](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.reportitembase#Telerik_Reporting_ReportItemBase_TocLevel) property on report items and the corresponding [TocLevel](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.group#Telerik_Reporting_Group_TocLevel) property on report and table groups. The Reporting Engine uses this value (or expression result) and maps each entry to the matching level definition in the [Levels](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.tocsection#Telerik_Reporting_TocSection_Levels) collection of the `TocSection`. The same behavior applies when you use a [Report Book Table of Contents](https://www.telerik.com/products/reporting/documentation/designing-reports/report-book/report-book-table-of-contents).

`TocLevel` is a string property whose value must evaluate to an `Integer` greater than or equal to **1**. The value can be:

* a literal integer (for example, `2`);
* an [expression](https://www.telerik.com/products/reporting/documentation/designing-reports/connecting-to-data/expressions/using-expressions/overview) that evaluates to an integer (for example, `= Fields.IsImportant ? 1 : 3`);

If the value cannot be evaluated to a valid `Integer`, the TOC level falls back to the [Default TOC Hierarchy](https://www.telerik.com/products/reporting/documentation/interactivity/table-of-contents/overview#default-toc-hierarchy). Values less than `1` are treated as `1` (the topmost TOC level).

> note `TocLevel` takes effect only when [TocText](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.reportitembase#Telerik_Reporting_ReportItemBase_TocText) is also set on the same item, section, or group. Setting `TocLevel` without `TocText` has no effect, because the element does not produce a TOC entry in the first place.

> note When part of the report sections/items/groups in the TOC have their `TocLevel` set and another part does not, the level of the elements without an explicit `TocLevel` is determined based on the default TOC hierarchy, that is, based on their position in the Report hierarchy.

##### How TOC Level Resolution Works

The following table summarizes how the engine resolves TOC levels:

| Configuration                                                   | Result                                                                  |
| --------------------------------------------------------------- | ----------------------------------------------------------------------- |
| `TocText` is set and `TocLevel` is not set                      | The engine uses the element position from the default report hierarchy. |
| `TocText` is set and `TocLevel` is a valid integer (`>= 1`)     | The engine uses the specified level.                                    |
| `TocText` is set and `TocLevel` is less than `1`                | The engine uses level `1`.                                              |
| `TocText` is set and `TocLevel` is invalid (for example, `abc`) | The engine falls back to the default report hierarchy.                  |
| `TocLevel` is set and `TocText` is empty                        | The engine does not create a TOC entry.                                 |

##### Default and Controlled Hierarchy Example

The following diagram shows the default hierarchy when `TocLevel` is not set:

```text
Report
└─ Country (Group, TocText)
   └─ City (Group, TocText)
      └─ Store Name (TextBox, TocText)
```

The following diagram shows the same content after overriding levels with `TocLevel`:

```text
Level 1
└─ Country (TocLevel=1)

Level 2
└─ Store Name (TocLevel=2)

Level 3
└─ City (TocLevel=3)
```

The following side-by-side diagram compares the hierarchy before and after the override:

```text
BEFORE (Default Hierarchy)          AFTER (Controlled Hierarchy)
Report                               Country
└─ Country                           └─ Store Name
   └─ City                              └─ City
      └─ Store Name
```

### Levels

The [Levels](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.tocsection#Telerik_Reporting_TocSection_Levels) property of the TocSection contains a collection of levels. Each level has its own [LeaderSymbol](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.toclevel#Telerik_Reporting_TocLevel_LeaderSymbol) property, which defines a single character. This character is used to fill the space between the TOC text and the page number. The default character is a dot (.). To prevent the leader symbol from appearing between the text and the page number, you will need to delete this character. Each level also has a [Style](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.drawing#Telerik_Reporting_Drawing_Style) property. The style configured there will be applied to all of the TOC entry elements: text, leader symbol, and page number.

When adding a TOC section to the report for the first time, the [Levels](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.tocsection#Telerik_Reporting_TocSection_Levels) collection will be empty. In this case, the TOC entries will be styled with a default style and leader symbol.

You can add levels and configure them by clicking on the ellipsis button of the [Levels](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.tocsection#Telerik_Reporting_TocSection_Levels) property to invoke the levels collection editor.

## Adding Content to the TOC Section

Report parts that expose the property `TocText` may be added to the Report Table of Contents. These are:

* [Report Sections](https://www.telerik.com/products/reporting/documentation/designing-reports/report-structure#report-sections);
* [Report Items](https://www.telerik.com/products/reporting/documentation/report-items/overview), including the [Report itself](https://www.telerik.com/products/reporting/documentation/report-items/report-item/overview);
* [Report Groups](https://www.telerik.com/products/reporting/documentation/designing-reports/connecting-to-data/data-items/grouping-data/how-to-add-groups-to-report);
* [Table Groups](https://www.telerik.com/products/reporting/documentation/designing-reports/connecting-to-data/data-items/grouping-data/how-to-add-groups-to-table-item-and-crosstab-item).

The `TocText` default value is null/empty string. Set this property to static text or a valid [Expression](https://www.telerik.com/products/reporting/documentation/designing-reports/connecting-to-data/expressions/using-expressions/overview); as long as the value is not null or empty, it will appear in the Report Table of Contents.

### Adding a Report Section to the Table of Contents

By default, the Report Sections generate TOC entries on the first level of the Report table of contents.

Set the `TocText` of the [Report Header and Footer Sections](https://www.telerik.com/products/reporting/documentation/report-items/report-item/report-headers-footers) to generate an entry on the first level at the beginning (for the header) and at the end (for the footer) of the table of contents.

The Detail Section is generated for each Report DataSource record. Therefore, when you set the `TocText` of a detail section, the Reporting Engine generates a Detail Section entry for each data record in the TOC.

> note Although the [Page Sections](https://www.telerik.com/products/reporting/documentation/report-items/report-item/page-headers-footers) expose the property TocText, they won't appear in the Table of Contents.

The inner Report items with configured `TocText` by default generate child entries that appear on the next level in the TOC entry of the corresponding Report section.

### Adding a Report Item to the Table of Contents

You can add a table of contents to the report and click on entries in the table of contents to jump to specific areas within a report.

1. In **Design view**, make sure the Properties pane is visible. Select the report item you want to add to the table of contents. In the Properties pane, type the text that you want to appear in the table of contents in the [TocText](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.reportitembase#Telerik_Reporting_ReportItemBase_TocText) property, or enter an expression that evaluates to a text.
2. Repeat step 1 for every report item you want to appear in the table of contents.
3. Enable the table of contents section from the report's context menu.
4. Click **Preview**. The report runs, and the table of contents displays the text you created. Click any link to jump to the report page and the exact location of that item.

> note Report items positioned in the Page Header/Page Footer section of the report cannot be used to create entries in the table of contents. Setting the [TocText](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.reportitembase#Telerik_Reporting_ReportItemBase_TocText) property of such an item will have no effect.

> note The order of entries in the table of contents is according to the order of the report items in the report items' collection, and not by the order in which the items appear in the report. Thus, to build a hierarchical table of contents, it is recommended to set the [TocText](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.reportitembase#Telerik_Reporting_ReportItemBase_TocText) of report/table groups instead of report items.
>
> Alternatively, use the [Report Explorer](https://www.telerik.com/products/reporting/documentation/designing-reports/report-designer-tools/desktop-designers/tools/report-explorer) to reorder the items in the corresponding container, so that they appear in the TOC in the desired sequence.

### Adding a Report Group to the Table of Contents

You can add a table of contents to the report and click on entries in the table of contents to jump to specific areas within a report.

1. In **Design view**, right-click outside the report sections, select View, and open up the [Group Explorer](https://www.telerik.com/products/reporting/documentation/designing-reports/report-designer-tools/desktop-designers/tools/group-explorer).
2. Select a report group that you want to appear in the table of contents. The properties for the selected group appear in the **Properties** pane.
3. In the [TocText](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.group#Telerik_Reporting_Group_TocText) property, type the text you want to appear in the table of contents. Alternatively, click the ellipsis to open the **Expression** dialog box to specify an expression that evaluates to a text. Typically, for a group, the expression you type should match the group expression.
4. Click **OK**.
5. Repeat steps 1-4 for every group you want to appear in the table of contents.
6. Enable the table of contents section from the report's context menu.
7. Run the report - the table of contents displays the group values. Click any TOC entry to jump to the report page with that group instance.

### Adding a Table Group to Table of Contents

You can add a table of contents to the report and click on entries in the table of contents to jump to specific areas within a report.

1. In **Design view**, right-click outside the report sections, select View, and open up the [Group Explorer](https://www.telerik.com/products/reporting/documentation/designing-reports/report-designer-tools/desktop-designers/tools/group-explorer).
2. Select a [Table](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.table), [Crosstab](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.crosstab) or [List](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.list) report item, so the **Group Explorer** shows the respective groups.
3. Select a group you want to add to the table of contents, right-click it, and select **Group Properties**. The properties for the selected group appear in the **Edit Table Group** dialog.
4. In the [TocText](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.tablegroup#Telerik_Reporting_TableGroup_TocText) property, type the text you want to appear in the table of contents. Alternatively, click the ellipsis to open the **Expression** dialog box to specify an expression that evaluates to a text. Typically, for a group, the expression you type should match the group expression.
5. Click **OK**.
6. Repeat steps 1-5 for every group you want to appear in the table of contents.
7. Enable the table of contents section from the report's context menu.
8. Run the report - the table of contents displays the group values. Click any TOC entry to jump to the report page with that group instance.

## See Also

* [How to Add a Table of Contents to Report Book](https://www.telerik.com/products/reporting/documentation/interactivity/table-of-contents/how-to-add-a-table-of-contents-to-report-book)
* [Create a Feature Report with a Custom TOC Level](https://www.telerik.com/products/reporting/documentation/knowledge-base/create-feature-report-custom-toc-level)
