protected function performDataBinding($data)
{
$this->reset();
$keys = $this->getDataKeys();
$keys->clear();
$keyField = $this->getDataKeyField();
$itemIndex = 0;
$items = $this->getItems();
$hasSeparator = $this->_separatorTemplate !== null || $this->getSeparatorRenderer() !== '';
$selectedIndex = $this->getSelectedItemIndex();
$editIndex = $this->getEditItemIndex();
foreach ($data as $key => $dataItem) {
if ($keyField !== '') {
$keys->add($this->getDataFieldValue($dataItem, $keyField));
} else {
$keys->add($key);
}
if ($itemIndex === 0) {
$this->_header = $this->createItemWithDataInternal(-1, TListItemType::Header, null);
}
if ($hasSeparator && $itemIndex > 0) {
$this->createItemWithDataInternal($itemIndex - 1, TListItemType::Separator, null);
}
if ($itemIndex === $editIndex) {
$itemType = TListItemType::EditItem;
} else {
if ($itemIndex === $selectedIndex) {
$itemType = TListItemType::SelectedItem;
} else {
$itemType = $itemIndex % 2 ? TListItemType::AlternatingItem : TListItemType::Item;
}
}
$items->add($this->createItemWithDataInternal($itemIndex, $itemType, $dataItem));
$itemIndex++;
}
if ($itemIndex > 0) {
$this->_footer = $this->createItemWithDataInternal(-1, TListItemType::Footer, null);
} else {
$this->createEmptyContent();
$this->dataBindChildren();
}
$this->setViewState('ItemCount', $itemIndex, 0);
}