protected function performDataBinding($data)
{
$items = $this->getItems();
if (!$this->getAppendDataBoundItems()) {
$items->clear();
}
$textField = $this->getDataTextField();
if ($textField === '') {
$textField = 0;
}
$valueField = $this->getDataValueField();
if ($valueField === '') {
$valueField = 1;
}
$textFormat = $this->getDataTextFormatString();
$groupField = $this->getDataGroupField();
foreach ($data as $key => $object) {
$item = $items->createListItem();
if (is_array($object) || is_object($object)) {
$text = TDataFieldAccessor::getDataFieldValue($object, $textField);
$value = TDataFieldAccessor::getDataFieldValue($object, $valueField);
$item->setValue($value);
if ($groupField !== '') {
$item->setAttribute('Group', TDataFieldAccessor::getDataFieldValue($object, $groupField));
}
} else {
$text = $object;
$item->setValue("{$key}");
}
$item->setText($this->formatDataValue($textFormat, $text));
}
// SelectedValue or SelectedIndex may be set before databinding
// so we make them be effective now
if ($this->_cachedSelectedValue !== null) {
$this->setSelectedValue($this->_cachedSelectedValue);
$this->resetCachedSelections();
} else {
if ($this->_cachedSelectedIndex !== -1) {
$this->setSelectedIndex($this->_cachedSelectedIndex);
$this->resetCachedSelections();
} else {
if ($this->_cachedSelectedValues !== null) {
$this->setSelectedValues($this->_cachedSelectedValues);
$this->resetCachedSelections();
} else {
if ($this->_cachedSelectedIndices !== null) {
$this->setSelectedIndices($this->_cachedSelectedIndices);
$this->resetCachedSelections();
}
}
}
}
}