Dashboards

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:
diagramStandard vs Template Parameter Resolution

Loading diagram...

  • 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 the TemplateParameterValues property 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 queriesWHERE Month = '~!tMonth!~'
  • Component Text propertiesReport for ~!tEntity!~
  • Custom adapter CommandText — Dynamic dataset selection
  • Other component properties — ToolTip, conditional expressions
⚠️Warning
Template parameters cannot be used in CubeViews. They only work in SQL adapters, component properties, and Custom adapter configurations. If you need dynamic CubeView behavior, use standard parameters (|!Param!|) with LiteralParameterValues on the embedded dashboard.

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:
  1. Set the dashboard Type to EmbeddedDynamic
  2. In the parent dashboard, add an Embedded Dashboard component pointing to the EmbeddedDynamic dashboard
  3. Set the TemplateParameterValues property on the embedded component (e.g., tRegion=West,tCurrency=USD)
  4. 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.
diagramEmbeddedDynamicRepeater Three-Dashboard Architecture

Loading diagram...

The Three Dashboards

  1. Main (TopLevel) — The dashboard visible to users. It contains an embedded component pointing to the Middle dashboard.
  2. Middle (EmbeddedDynamicRepeater) — Not visible to users. It holds the ComponentTemplateRepeatItems configuration that defines how many instances to create and what template values each gets.
  3. 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:
PropertyDescriptionExample
TemplateNameSuffixAppended to the dashboard name at runtime to create a unique instance identifierJan, Feb, Mar
TemplateParameterValuesComma-separated name-value pairs that resolve the ~!Param!~ placeholders in the Child dashboardtMonth=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:
plaintext
1SELECT Account, Amount
2FROM dbo.MonthlyData
3WHERE Month = '~!tMonth!~'
4AND Entity = '|!SelectedEntity!|'
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:
TemplateNameSuffixTemplateParameterValues
JantMonth=2026M1
FebtMonth=2026M2
MartMonth=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.
diagramMonthly Comparison Data Flow

Loading diagram...

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:
TemplateNameSuffixTemplateParameterValues
HoustontEntity=Houston
DallastEntity=Dallas

Result

The repeater creates two ComboBox instances:
  • Instance 1: BoundParameter = Houston_Selection (writes its selection to the Houston_Selection parameter)
  • Instance 2: BoundParameter = Dallas_Selection (writes its selection to the Dallas_Selection parameter)
diagramDynamic Bound Parameter Resolution

Loading diagram...

When to Use Each Type

FeatureEmbeddedDynamicEmbeddedDynamicRepeater
Number of instancesSingle instanceMultiple instances
Template values sourceTemplateParameterValues on the embedded componentTemplateParameterValues per repeat item
Use caseModify one dashboard's configuration at runtimeRepeat the same layout with different data
Dashboard count2 (Parent + Child)3 (Main + Middle + Child)
ExampleRegion-specific report variantMonthly comparison, entity cards