This is not inteded to be a holistic example that can be copied and pasted and expected to work. I would suggest using this only to get an idea of where I was going with this.
<vbox id="theSpot">
<listbox id="list" flex="1" style="min-width:400px;">
<listhead>
<listheader id="identity" label="Id" />
<listheader id="name" label="Name" />
<listheader id="description" label="Description" />
<listheader id="length" label="length" />
<listheader id="Period" label="Period" />
<listheader id="AttributeValues" label="Attribute Values" />
</listhead>
<listcols>
<listcol flex="1" /><splitter class="list-splitter" />
<listcol flex="1" /><splitter class="list-splitter" />
<listcol flex="1" /><splitter class="list-splitter" />
<listcol flex="1" /><splitter class="list-splitter" />
<listcol flex="1" /><splitter class="list-splitter" />
<listcol flex="1" />
</listcols>
<repeater id="planRepeater">
<listitem style="max-height:50px;">
<listcell label="{Id}" />
<listcell label="{Name}" />
<listcell label="{Description}" />
<listcell label="{PeriodLength}" />
<listcell label="{PeriodTypeName}" />
<listcell>
<vbox>
<repeater datasource="PlanData.planAttributeValuesDS.getNewPartialDataSource('planId', {Id})">
<hbox>
<label value="{attribute}" />
<label value="{value}" />
</hbox>
</repeater>
</vbox>
</listcell>
</listitem>
</repeater>
</listbox>
</vbox>
<!-- script
function INIT(){
PlanChooser = new PlanChooserConstructor();
ADWObjectBuilder.aspectObject(PlanChooser);
PlanChooser.init();
PlanChooser.repeater = document.getElementById('planRepeater');
PlanChooser.repeater.init_bind( PlanData.plansDS ); //PlanData.plansDS is being generated by an HTTP handler
PlanChooser.repeater.bind();
PlanChooser.list = document.getElementById('list');
var listholder = PlanChooser.list.parentNode;
listholder.removeChild(PlanChooser.list);
listholder.appendChild(PlanChooser.list);
};
-->