03 - Child Bands
Je hebt net een pakbon of factuur gebouwd met een databand die elke regel op dezelfde manier toont. Maar in de praktijk zijn niet alle regels hetzelfde. Een order kan artikelregels bevatten (met artikelnummer, aantal en prijs) én tekstregels (met alleen een opmerking of toelichting). Die twee typen vereisen een andere layout.
Hoe toon je ze allebei in dezelfde databand? Daarvoor gebruik je child bands met een Enabled-expressie.
Wat is een child band?
Een child band is een extra band die direct onder een databand hangt. Bij elke herhaling van de databand kan de child band wel of niet worden getoond — afhankelijk van een voorwaarde in de eigenschap Enabled.
Vergelijk het met een dubbele deur: bij elke herhaling opent Stimulsoft ofwel de linkerdeur (artikelregel), ofwel de rechterdeur (tekstregels), afhankelijk van het type regel.
Het probleem zonder child bands
Stel: je orderregels bevatten twee typen:
| RegelType | ArtikelNummer | Omschrijving | Aantal | Prijs |
|---|---|---|---|---|
Artikel | A001 | Tarwebloem | 50 | 1.20 |
Tekst | (leeg) | Levering via achterdeur | (leeg) | (leeg) |
Artikel | A002 | Roggebloem | 20 | 1.45 |
Zonder child bands zou je artikelnummer, aantal en prijs ook tonen bij de tekstregel — met lege waarden. Dat ziet er rommelig uit. Met highlight conditions kun je kolommen verbergen, maar dat wordt snel onbeheersbaar.
De oplossing: DataBand + child bands
De aanpak die wij gebruiken: maak de DataBand zelf leeg (hoogte op 0) en gebruik twee child bands met elk hun eigen layout:
┌──────────────────────────────────────────────┐
│ DataBand (Regels) — hoogte 0, geen inhoud │
├──────────────────────────────────────────────┤
│ ChildBand1 (artikelregel) │
│ Enabled: Lines.LineType == "Article" │
│ [ArtikelNr] [Omschrijving] [Aantal] [Prijs]│
├──────────────────────────────────────────────┤
│ ChildBand2 (tekstregel) │
│ Enabled: Lines.LineType == "Text" │
│ [Tekst — volledige breedte] │
└──────────────────────────────────────────────┘ Bij elke rij in de dataset evalueert Stimulsoft de Enabled-expressie:
- Is het een artikelregel? → ChildBand1 wordt getoond (met alle kolommen)
- Is het een tekstregel? → ChildBand2 wordt getoond (alleen tekst, volledige breedte)
De twee child bands worden nooit tegelijk getoond — het is altijd of de ene of de andere.
Stap voor stap: child band instellen
Stap 1 — DataBand leegmaken
- Sleep het business object (bijv. PackingSlip.Lines) naar het canvas — er verschijnt een DataBand
- Verwijder alle tekstvelden uit de DataBand (of voeg er geen toe)
- Sleep de hoogte van de DataBand naar 0 — hij is er wel, maar je ziet hem niet
Stap 2 — Child band toevoegen voor artikelregels
- Ga naar Invoegen (tabblad Banden) en kies Child Band
- Klik op het canvas — de child band verschijnt direct onder de DataBand
- Sleep de gewenste velden (artikelcode, naam, aantal, prijs) vanuit het woordenboek in deze child band
- Stel de eigenschap Enabled in op een expressie:
Lines.LineType == "Article"
Stap 3 — Tweede child band toevoegen voor tekstregels
- Voeg nogmaals een Child Band toe
- Voeg een tekstvak toe met
{Lines.Text}— geef het de volledige breedte - Stel de eigenschap Enabled in op:
Lines.LineType == "Text"
Tip: Enabled-expressie vinden
Weet je niet op welke waarde je moet filteren? Klik met de rechtermuisknop op het business object (bijv. Lines) en kies Gegevens weergeven (View Data). Daar zie je de kolom LineType met de werkelijke waarden.
Het resultaat
Bij het genereren toont het rapport:
A001 Tarwebloem 50 € 1.20 € 60.00
Levering via achterdeur
A002 Roggebloem 20 € 1.45 € 29.00 Elke regel krijgt de layout die past bij het type. Geen lege kolommen, geen rommelige highlight conditions.
Accolades in expressies
Herinnering: in een expressieveld (zoals Enabled) typ je zonder accolades. Zie de uitleg in sessie 3 (Expressies) voor het verschil tussen tekstvakken en expressievelden.
Meerdere child bands
Je kunt meerdere child bands onder dezelfde databand plaatsen — bijvoorbeeld een derde layout voor een subtotaalregel of een korting. Elke child band heeft zijn eigen Enabled-expressie.
Waarom child bands in plaats van Enabled op de DataBand?
Als je de Enabled-expressie op de DataBand zelf zou zetten, verdwijnt de hele databand voor regels die niet voldoen — dan zie je helemaal niets meer. Met child bands blijft de DataBand altijd actief (voor elke rij) en kies je per rij welke child band zichtbaar is.
Samenvatting
- Maak de DataBand leeg (hoogte 0) en gebruik child bands voor de verschillende layouts
- De eigenschap Enabled bepaalt per rij of de band wordt getoond
- Gebruik child bands om verschillende regeltypen elk hun eigen layout te geven
- In een expressieveld (Enabled/Condition) typ je zonder accolades
- Dit vervangt complexe highlight conditions — schoner en beter onderhoudbaar