From c67ad6b37e8f1a02d85ca5170341b22ebd6bf34b Mon Sep 17 00:00:00 2001 From: xue <> Date: Fri, 21 Jul 2006 18:12:36 +0000 Subject: Fixed #263. --- framework/Web/UI/WebControls/TListControl.php | 35 ++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) (limited to 'framework/Web/UI/WebControls/TListControl.php') diff --git a/framework/Web/UI/WebControls/TListControl.php b/framework/Web/UI/WebControls/TListControl.php index 7cdfc727..d5949dde 100644 --- a/framework/Web/UI/WebControls/TListControl.php +++ b/framework/Web/UI/WebControls/TListControl.php @@ -621,24 +621,53 @@ abstract class TListControl extends TDataBoundControl if($this->_items) { $writer->writeLine(); + $previousGroup=null; foreach($this->_items as $item) { if($item->getEnabled()) { - if($item->getSelected()) - $writer->addAttribute('selected','selected'); - $writer->addAttribute('value',$item->getValue()); if($item->getHasAttributes()) { + $group=$item->getAttributes()->remove('Group'); + if($group!==$previousGroup) + { + if($previousGroup!==null) + { + $writer->renderEndTag(); + $writer->writeLine(); + $previousGroup=null; + } + if($group!==null) + { + $writer->addAttribute('label',$group); + $writer->renderBeginTag('optgroup'); + $writer->writeLine(); + $previousGroup=$group; + } + } foreach($item->getAttributes() as $name=>$value) $writer->addAttribute($name,$value); } + else if($previousGroup!==null) + { + $writer->renderEndTag(); + $writer->writeLine(); + $previousGroup=null; + } + if($item->getSelected()) + $writer->addAttribute('selected','selected'); + $writer->addAttribute('value',$item->getValue()); $writer->renderBeginTag('option'); $writer->write(THttpUtility::htmlEncode($item->getText())); $writer->renderEndTag(); $writer->writeLine(); } } + if($previousGroup!==null) + { + $writer->renderEndTag(); + $writer->writeLine(); + } } } -- cgit v1.2.3