From 9b426cf539f69e7dae8d179c59b99c6a576a36d1 Mon Sep 17 00:00:00 2001 From: xue <> Date: Thu, 4 May 2006 15:49:24 +0000 Subject: Fixed #150 - TDataGrid and TDataList now render table section tags --- framework/Web/UI/WebControls/TDataGrid.php | 93 ++++++++++++++++++++++++++-- framework/Web/UI/WebControls/TRepeatInfo.php | 8 +++ 2 files changed, 95 insertions(+), 6 deletions(-) (limited to 'framework/Web/UI/WebControls') diff --git a/framework/Web/UI/WebControls/TDataGrid.php b/framework/Web/UI/WebControls/TDataGrid.php index 55b12ebc..6ff6faba 100644 --- a/framework/Web/UI/WebControls/TDataGrid.php +++ b/framework/Web/UI/WebControls/TDataGrid.php @@ -356,6 +356,39 @@ class TDataGrid extends TBaseDataList implements INamingContainer return $style; } + /** + * @return string caption for the datagrid + */ + public function getCaption() + { + return $this->getViewState('Caption',''); + } + + /** + * @param string caption for the datagrid + */ + public function setCaption($value) + { + $this->setViewState('Caption',$value,''); + } + + /** + * @return string datagrid caption alignment. Defaults to 'NotSet'. + */ + public function getCaptionAlign() + { + return $this->getViewState('CaptionAlign','NotSet'); + } + + /** + * @param string datagrid caption alignment. Valid values include + * 'NotSet','Top','Bottom','Left','Right'. + */ + public function setCaptionAlign($value) + { + $this->setViewState('CaptionAlign',TPropertyValue::ensureEnum($value,'NotSet','Top','Bottom','Left','Right'),'NotSet'); + } + /** * @return TDataGridItem the header item */ @@ -1443,6 +1476,23 @@ class TDataGrid extends TBaseDataList implements INamingContainer } } + /** + * Renders the openning tag for the datagrid control which will render table caption if present. + * @param THtmlWriter the writer used for the rendering purpose + */ + public function renderBeginTag($writer) + { + parent::renderBeginTag($writer); + if(($caption=$this->getCaption())!=='') + { + if(($align=$this->getCaptionAlign())!=='NotSet') + $writer->addAttribute('align',strtolower($align)); + $writer->renderBeginTag('caption'); + $writer->write($caption); + $writer->renderEndTag(); + } + } + /** * Renders the datagrid. * @param THtmlWriter writer for the rendering purpose @@ -1457,12 +1507,7 @@ class TDataGrid extends TBaseDataList implements INamingContainer $this->_topPager->renderControl($writer); $writer->writeLine(); } - $this->renderBeginTag($writer); - $this->_header->renderControl($writer); - foreach($this->getItems() as $item) - $item->renderControl($writer); - $this->_footer->renderControl($writer); - $this->renderEndTag($writer); + $this->renderTable($writer); if($this->_bottomPager) { $writer->writeLine(); @@ -1470,6 +1515,38 @@ class TDataGrid extends TBaseDataList implements INamingContainer } } } + + /** + * Renders the tabular data. + * @param THtmlWriter writer + */ + protected function renderTable($writer) + { + $this->renderBeginTag($writer); + if($this->_header->getVisible()) + { + $writer->writeLine(); + $writer->renderBeginTag('thead'); + $this->_header->render($writer); + $writer->renderEndTag(); + } + $writer->writeLine(); + $writer->renderBeginTag('tbody'); + foreach($this->getItems() as $item) + $item->renderControl($writer); + $writer->renderEndTag(); + + if($this->_footer->getVisible()) + { + $writer->writeLine(); + $writer->renderBeginTag('tfoot'); + $this->_footer->render($writer); + $writer->renderEndTag(); + } + + $writer->writeLine(); + $this->renderEndTag($writer); + } } /** @@ -1758,6 +1835,10 @@ class TDataGridItem extends TTableRow implements INamingContainer $this->_itemIndex=$itemIndex; $this->_dataSourceIndex=$dataSourceIndex; $this->setItemType($itemType); + if($itemType===TDataGrid::IT_HEADER) + $this->setTableSection('Header'); + else if($itemType===TDataGrid::IT_FOOTER) + $this->setTableSection('Footer'); } /** diff --git a/framework/Web/UI/WebControls/TRepeatInfo.php b/framework/Web/UI/WebControls/TRepeatInfo.php index 10c49691..81b82c33 100644 --- a/framework/Web/UI/WebControls/TRepeatInfo.php +++ b/framework/Web/UI/WebControls/TRepeatInfo.php @@ -261,6 +261,7 @@ class TRepeatInfo extends TComponent // render items if($tableLayout) { + $writer->renderBeginTag('tbody'); $column=0; for($i=0;$i<$itemCount;++$i) { @@ -297,6 +298,7 @@ class TRepeatInfo extends TComponent $column=0; } } + $writer->renderEndTag(); } else { @@ -353,6 +355,7 @@ class TRepeatInfo extends TComponent if($tableLayout) { + $writer->renderBeginTag('tbody'); $renderedItems=0; for($row=0;$row<$rows;++$row) { @@ -407,6 +410,7 @@ class TRepeatInfo extends TComponent $writer->renderEndTag(); $writer->writeLine(); } + $writer->renderEndTag(); } else { @@ -461,6 +465,7 @@ class TRepeatInfo extends TComponent { if($tableLayout) { + $writer->renderBeginTag('thead'); $writer->renderBeginTag('tr'); if($columns>1) $writer->addAttribute('colspan',"$columns"); @@ -471,6 +476,7 @@ class TRepeatInfo extends TComponent $user->renderItem($writer,$this,'Header',-1); $writer->renderEndTag(); $writer->renderEndTag(); + $writer->renderEndTag(); } else { @@ -492,6 +498,7 @@ class TRepeatInfo extends TComponent { if($tableLayout) { + $writer->renderBeginTag('tfoot'); $writer->renderBeginTag('tr'); if($columns>1) $writer->addAttribute('colspan',"$columns"); @@ -501,6 +508,7 @@ class TRepeatInfo extends TComponent $user->renderItem($writer,$this,'Footer',-1); $writer->renderEndTag(); $writer->renderEndTag(); + $writer->renderEndTag(); } else $user->renderItem($writer,$this,'Footer',-1); -- cgit v1.2.3