Template Parameters and Dynamic Dashboards
Template parameters let you produce multiple variations of a single dashboard component without duplicating the component definition. Instead of creating three separate CubeViews for January, February, and March, you define one CubeView with a template parameter
~!tMonth!~ and let the repeater engine create the instances for you. This guide covers template parameter syntax, EmbeddedDynamic dashboards, and the EmbeddedDynamicRepeater pattern with worked examples.What Are Template Parameters?
Template parameters are resolved at dashboard render time from the
TemplateParameterValues property — not by user prompts. They are a design-time substitution mechanism used within EmbeddedDynamic and EmbeddedDynamicRepeater dashboards.The key difference from standard parameters:
- Standard parameters (
|!Param!|) — User is prompted to select a value. The value is shared across the entire dashboard page. - Template parameters (
~!Param!~) — Value comes from theTemplateParameterValuesproperty on the embedded component or repeater item. No user prompt. Each instance can have a different value.
Template Parameter Syntax: ~!ParamName!~
Use
~!ParamName!~ in the following locations within EmbeddedDynamic or EmbeddedDynamicRepeater child dashboards:- SQL data adapter queries —
WHERE Month = '~!tMonth!~' - Component Text properties —
Report for ~!tEntity!~ - Custom adapter CommandText — Dynamic dataset selection
- Other component properties — ToolTip, conditional expressions
Dynamic Bound Parameter Syntax: (~|ParamName|~)
Used on component BoundParameter properties within EmbeddedDynamicRepeater dashboards. This syntax ensures template substitution occurs before the bound parameter name is evaluated, creating unique parameter names for each repeated instance.
Example: A ComboBox with
BoundParameter = (~|tEntity|~)_Selection in a repeater with tEntity=Houston creates a bound parameter named Houston_Selection.EmbeddedDynamic Dashboards
An EmbeddedDynamic dashboard allows you to modify component properties, adapter configuration, and parameters at runtime via template parameters. It produces a single instance of the embedded content — unlike the Repeater, it does not create multiple copies.
To use an EmbeddedDynamic dashboard:
- Set the dashboard Type to EmbeddedDynamic
- In the parent dashboard, add an Embedded Dashboard component pointing to the EmbeddedDynamic dashboard
- Set the TemplateParameterValues property on the embedded component (e.g.,
tRegion=West,tCurrency=USD) - In the child dashboard, use
~!tRegion!~and~!tCurrency!~in component properties and adapter queries
EmbeddedDynamicRepeater Dashboards
The EmbeddedDynamicRepeater is the more powerful pattern — it produces multiple instances of the same dashboard layout, each with different template parameter values. This uses a three-dashboard architecture.
The Three Dashboards
- Main (TopLevel) — The dashboard visible to users. It contains an embedded component pointing to the Middle dashboard.
- Middle (EmbeddedDynamicRepeater) — Not visible to users. It holds the ComponentTemplateRepeatItems configuration that defines how many instances to create and what template values each gets.
- Child (EmbeddedDynamic) — The actual component/adapter definitions using
~!ParamName!~syntax. The repeater creates one instance of this dashboard per repeat item.
ComponentTemplateRepeatItems
The Middle dashboard's embedded component has a ComponentTemplateRepeatItems configuration. Each entry defines one repeated instance with two required properties:
| Property | Description | Example |
|---|---|---|
| TemplateNameSuffix | Appended to the dashboard name at runtime to create a unique instance identifier | Jan, Feb, Mar |
| TemplateParameterValues | Comma-separated name-value pairs that resolve the ~!Param!~ placeholders in the Child dashboard | tMonth=2026M1 |
Worked Example 1: Monthly Comparison Grid
A single CubeView component repeated three times for January, February, and March — each showing the same report structure but for a different month.
Child Dashboard (EmbeddedDynamic) — Monthly Data
Contains a SQL data adapter with:
Note how
~!tMonth!~ (template parameter — different per instance) and |!SelectedEntity!| (standard parameter — same across all instances) can coexist in the same query.Middle Dashboard (EmbeddedDynamicRepeater) — Monthly Repeater
ComponentTemplateRepeatItems configuration:
| TemplateNameSuffix | TemplateParameterValues |
|---|---|
Jan | tMonth=2026M1 |
Feb | tMonth=2026M2 |
Mar | tMonth=2026M3 |
Main Dashboard (TopLevel)
Contains an embedded component pointing to the Middle dashboard. The user sees three grids side-by-side, each showing data for a different month.
Worked Example 2: Entity Cards with Dynamic Bound Parameters
A ComboBox component repeated per entity, each with its own BoundParameter so selections are tracked independently.
Child Dashboard (EmbeddedDynamic) — Entity ComboBox
Contains a ComboBox with:
- BoundParameter =
(~|tEntity|~)_Selection - MemberFilter =
A#TotalRevenue.Children
Middle Dashboard (EmbeddedDynamicRepeater) — Entity Repeater
ComponentTemplateRepeatItems configuration:
| TemplateNameSuffix | TemplateParameterValues |
|---|---|
Houston | tEntity=Houston |
Dallas | tEntity=Dallas |
Result
The repeater creates two ComboBox instances:
- Instance 1: BoundParameter =
Houston_Selection(writes its selection to theHouston_Selectionparameter) - Instance 2: BoundParameter =
Dallas_Selection(writes its selection to theDallas_Selectionparameter)
When to Use Each Type
| Feature | EmbeddedDynamic | EmbeddedDynamicRepeater |
|---|---|---|
| Number of instances | Single instance | Multiple instances |
| Template values source | TemplateParameterValues on the embedded component | TemplateParameterValues per repeat item |
| Use case | Modify one dashboard's configuration at runtime | Repeat the same layout with different data |
| Dashboard count | 2 (Parent + Child) | 3 (Main + Middle + Child) |
| Example | Region-specific report variant | Monthly comparison, entity cards |
Related Content
- Parameters and Syntax — Standard parameter types and
|!Param!|syntax - Dashboard Architecture — Embedded dashboard types overview
- Data Adapters — SQL adapter setup for template parameter substitution