From 96f2c4205554f69ffd2d872bcd0dcd87b3a6e571 Mon Sep 17 00:00:00 2001 From: xue <> Date: Mon, 17 Sep 2007 12:56:51 +0000 Subject: fixed renderer bug. --- framework/Web/UI/WebControls/TDataList.php | 57 +++++++++++++----------- framework/Web/UI/WebControls/TRepeater.php | 6 ++- framework/Web/UI/WebControls/TTemplateColumn.php | 8 ++-- 3 files changed, 41 insertions(+), 30 deletions(-) (limited to 'framework/Web') diff --git a/framework/Web/UI/WebControls/TDataList.php b/framework/Web/UI/WebControls/TDataList.php index 5c8ec700..c4da634a 100644 --- a/framework/Web/UI/WebControls/TDataList.php +++ b/framework/Web/UI/WebControls/TDataList.php @@ -1173,6 +1173,35 @@ class TDataList extends TBaseDataList implements INamingContainer, IRepeatInfoUs return null; } + private function getAlternatingItemDisplay() + { + if(($classPath=$this->getAlternatingItemRenderer())==='' && ($template=$this->_alternatingItemTemplate)===null) + return array($this->getItemRenderer(),$this->_itemTemplate); + else + return array($classPath,$template); + } + + private function getSelectedItemDisplay($itemIndex) + { + if(($classPath=$this->getSelectedItemRenderer())==='' && ($template=$this->_selectedItemTemplate)===null) + { + if($itemIndex%2===0) + return array($this->getItemRenderer(),$this->_itemTemplate); + else + return $this->getAlternatingItemDisplay(); + } + else + return array($classPath,$template); + } + + private function getEditItemDisplay($itemIndex) + { + if(($classPath=$this->getEditItemRenderer())==='' && ($template=$this->_editItemTemplate)===null) + return $this->getSelectedItemDisplay($itemIndex); + else + return array($classPath,$template); + } + /** * Creates a datalist item instance based on the item type and index. * @param integer zero-based item index @@ -1190,35 +1219,13 @@ class TDataList extends TBaseDataList implements INamingContainer, IRepeatInfoUs $template=$this->_itemTemplate; break; case TListItemType::AlternatingItem : - if(($classPath=$this->getAlternatingItemRenderer())==='') - $classPath=$this->getItemRenderer(); - $template=$this->_alternatingItemTemplate===null ? $this->_itemTemplate : $this->_alternatingItemTemplate; + list($classPath,$template)=$this->getAlternatingItemDisplay(); break; case TListItemType::SelectedItem: - if(($classPath=$this->getSelectedItemRenderer())==='') - { - if(!($itemIndex%2) || ($classPath=$this->getAlternatingItemRenderer())==='') - $classPath=$this->getItemRenderer(); - } - if(($template=$this->_selectedItemTemplate)===null) - { - if(!($itemIndex%2) || ($template=$this->_alternatingItemTemplate)===null) - $template=$this->_itemTemplate; - } + list($classPath,$template)=$this->getSelectedItemDisplay($itemIndex); break; case TListItemType::EditItem: - if(($classPath=$this->getEditItemRenderer())==='') - { - if($itemIndex!==$this->getSelectedItemIndex() || ($classPath=$this->getSelectedItemRenderer())==='') - if(!($itemIndex%2) || ($classPath=$this->getAlternatingItemRenderer())==='') - $classPath=$this->getItemRenderer(); - } - if(($template=$this->_editItemTemplate)===null) - { - if($itemIndex!==$this->getSelectedItemIndex() || ($template=$this->_selectedItemTemplate)===null) - if(!($itemIndex%2) || ($template=$this->_alternatingItemTemplate)===null) - $template=$this->_itemTemplate; - } + list($classPath,$template)=$this->getEditItemDisplay($itemIndex); break; case TListItemType::Header : $classPath=$this->getHeaderRenderer(); diff --git a/framework/Web/UI/WebControls/TRepeater.php b/framework/Web/UI/WebControls/TRepeater.php index c94d559a..c35f38a8 100644 --- a/framework/Web/UI/WebControls/TRepeater.php +++ b/framework/Web/UI/WebControls/TRepeater.php @@ -523,9 +523,11 @@ class TRepeater extends TDataBoundControl implements INamingContainer $template=$this->_itemTemplate; break; case TListItemType::AlternatingItem : - if(($classPath=$this->getAlternatingItemRenderer())==='') + if(($classPath=$this->getAlternatingItemRenderer())==='' && ($template=$this->_alternatingItemTemplate)===null) + { $classPath=$this->getItemRenderer(); - $template=$this->_alternatingItemTemplate===null ? $this->_itemTemplate : $this->_alternatingItemTemplate; + $template=$this->_itemTemplate; + } break; case TListItemType::Header : $classPath=$this->getHeaderRenderer(); diff --git a/framework/Web/UI/WebControls/TTemplateColumn.php b/framework/Web/UI/WebControls/TTemplateColumn.php index bd3a2acb..377fadfc 100644 --- a/framework/Web/UI/WebControls/TTemplateColumn.php +++ b/framework/Web/UI/WebControls/TTemplateColumn.php @@ -194,9 +194,11 @@ class TTemplateColumn extends TDataGridColumn { if($itemType===TListItemType::EditItem) { - $template=$this->_editItemTemplate===null?$this->_itemTemplate:$this->_editItemTemplate; - if(($classPath=$this->getEditItemRenderer())==='') + if(($classPath=$this->getEditItemRenderer())==='' && ($template=$this->_editItemTemplate)===null) + { $classPath=$this->getItemRenderer(); + $template=$this->_itemTemplate; + } } else { @@ -236,7 +238,7 @@ class TTemplateColumn extends TDataGridColumn else if($this->_footerTemplate!==null) $this->_footerTemplate->instantiateIn($cell); else - $this->initializeHeaderCell($cell,$columnIndex); + $this->initializeFooterCell($cell,$columnIndex); } } -- cgit v1.2.3