/** * Parses and intantiates templates. * This method is invoked when <b>OnDataBinding</b> event is raised. * It parses and instantiates all assoicated templates for the * data listing control and raises related events. * This method should only used by control developers. * @param TEventParameter event parameter */ protected function onDataBinding($param) { parent::onDataBinding($param); $this->setViewState('Items', null, null); $this->removeChildren(); $this->removeBodies(); $this->items->clear(); $this->separators->clear(); $this->header = null; $this->footer = null; if (is_null($this->dataSource)) { return; } if (strlen($this->headerTemplate)) { $this->header = $this->createComponent('TDataListItem', self::ID_HEADER); $this->header->setType(TDataListItem::TYPE_HEADER); $this->header->instantiateTemplate($this->headerTemplate); $this->addBody($this->header); $p = new TDataListItemEventParameter(); $p->item = $this->header; $this->onItemCreated($p); } $selectedIndex = $this->getSelectedItemIndex(); $editIndex = $this->getEditItemIndex(); $count = 0; foreach ($this->dataSource as $key => $value) { if ($count > 0 && strlen($this->separatorTemplate)) { $separator = $this->createComponent('TDataListItem', self::ID_SEPARATOR . "{$count}"); $separator->setType(TDataListItem::TYPE_SEPARATOR); $separator->instantiateTemplate($this->separatorTemplate); $this->addBody($separator); $this->separators->add($separator); } $item = null; if ($count == $selectedIndex && strlen($this->selectedItemTemplate)) { $item = $this->createComponent('TDataListItem', self::ID_ITEM . "{$count}"); $item->setType(TDataListItem::TYPE_SELECTED_ITEM); $item->instantiateTemplate($this->selectedItemTemplate); } else { if ($count == $editIndex && strlen($this->editItemTemplate)) { $item = $this->createComponent('TDataListItem', self::ID_ITEM . "{$count}"); $item->setType(TDataListItem::TYPE_EDIT_ITEM); $item->instantiateTemplate($this->editItemTemplate); } else { if ($count % 2 == 1 && strlen($this->alternatingItemTemplate)) { $item = $this->createComponent('TDataListItem', self::ID_ITEM . "{$count}"); $item->setType(TDataListItem::TYPE_ALTERNATING_ITEM); $item->instantiateTemplate($this->alternatingItemTemplate); } else { if (strlen($this->itemTemplate)) { $item = $this->createComponent('TDataListItem', self::ID_ITEM . "{$count}"); $item->setType(TDataListItem::TYPE_ITEM); $item->instantiateTemplate($this->itemTemplate); } } } } if (!is_null($item)) { $item->setItemIndex($count); $item->setData($value); $this->items->add($item); $p = new TDataListItemEventParameter(); $p->item = $item; $this->onItemCreated($p); } $count++; } if (strlen($this->footerTemplate)) { $this->footer = $this->createComponent('TDataListItem', self::ID_FOOTER); $this->footer->setType(TDataListItem::TYPE_FOOTER); $this->footer->instantiateTemplate($this->footerTemplate); $this->addBody($this->footer); $p = new TDataListItemEventParameter(); $p->item = $this->footer; $this->onItemCreated($p); } }