diff options
| author | xue <> | 2006-07-21 18:12:36 +0000 | 
|---|---|---|
| committer | xue <> | 2006-07-21 18:12:36 +0000 | 
| commit | c67ad6b37e8f1a02d85ca5170341b22ebd6bf34b (patch) | |
| tree | 5b4a9f73146f04e74679f7893d4cc31af8a37b45 /framework/Web/UI/WebControls | |
| parent | aff2407a4507713453deb274837ab2bbf39303b2 (diff) | |
Fixed #263.
Diffstat (limited to 'framework/Web/UI/WebControls')
| -rw-r--r-- | framework/Web/UI/WebControls/TDropDownList.php | 7 | ||||
| -rw-r--r-- | framework/Web/UI/WebControls/TListBox.php | 7 | ||||
| -rw-r--r-- | framework/Web/UI/WebControls/TListControl.php | 35 | 
3 files changed, 46 insertions, 3 deletions
diff --git a/framework/Web/UI/WebControls/TDropDownList.php b/framework/Web/UI/WebControls/TDropDownList.php index 860fe69c..04f3780c 100644 --- a/framework/Web/UI/WebControls/TDropDownList.php +++ b/framework/Web/UI/WebControls/TDropDownList.php @@ -21,6 +21,13 @@ Prado::using('System.Web.UI.WebControls.TListControl');   * TDropDownList displays a dropdown list on a Web page.
   * It inherits all properties and events from {@link TListControl}.
   *
 + * Since v3.0.3, TDropDownList starts to support optgroup. To specify an option group for
 + * a list item, set a Group attribute with it,
 + * <code>
 + *  $listitem->Attributes->Group="Group Name";
 + *  // or <com:TListItem Attributes.Group="Group Name" .../> in template
 + * </code>
 + *
   * @author Qiang Xue <qiang.xue@gmail.com>
   * @version $Revision: $  $Date: $
   * @package System.Web.UI.WebControls
 diff --git a/framework/Web/UI/WebControls/TListBox.php b/framework/Web/UI/WebControls/TListBox.php index 972ebbcb..79b73fb6 100644 --- a/framework/Web/UI/WebControls/TListBox.php +++ b/framework/Web/UI/WebControls/TListBox.php @@ -24,6 +24,13 @@ Prado::using('System.Web.UI.WebControls.TListControl');   * The property {@link setRows Rows} specifies how many rows of options are visible
   * at a time. See {@link TListControl} for inherited properties.
   *
 + * Since v3.0.3, TListBox starts to support optgroup. To specify an option group for
 + * a list item, set a Group attribute with it,
 + * <code>
 + *  $listitem->Attributes->Group="Group Name";
 + *  // or <com:TListItem Attributes.Group="Group Name" .../> in template
 + * </code>
 + *
   * @author Qiang Xue <qiang.xue@gmail.com>
   * @version $Revision: $  $Date: $
   * @package System.Web.UI.WebControls
 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();
 +			}
  		}
  	}
  | 
