From 54900d0145dfda07bde40dc6e1f0b31935b55444 Mon Sep 17 00:00:00 2001 From: xue <> Date: Tue, 17 Jan 2006 23:58:54 +0000 Subject: --- framework/Web/UI/WebControls/TDataList.php | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) (limited to 'framework/Web/UI/WebControls/TDataList.php') diff --git a/framework/Web/UI/WebControls/TDataList.php b/framework/Web/UI/WebControls/TDataList.php index ebaf9568..6f61f8ef 100644 --- a/framework/Web/UI/WebControls/TDataList.php +++ b/framework/Web/UI/WebControls/TDataList.php @@ -414,6 +414,22 @@ class TDataList extends TBaseDataList implements INamingContainer, IRepeatInfoUs return null; } + /** + * @return mixed the key value of the currently selected item + * @throws TInvalidOperationException if {@link getDataKeyField DataKeyField} is empty. + */ + public function getSelectedDataKey() + { + if($this->getDataKeyField()==='') + throw new TInvalidOperationException('datalist_datakeyfield_required'); + $index=$this->getSelectedIndex(); + $dataKeys=$this->getDataKeys(); + if($index>=0 && $index<$dataKeys->getCount()) + return $dataKeys->itemAt($index); + else + return null; + } + /** * @return integer the zero-based index of the edit item in {@link getItems Items}. * A value -1 means no item is in edit mode. @@ -1091,17 +1107,7 @@ class TDataList extends TBaseDataList implements INamingContainer, IRepeatInfoUs foreach($data as $dataItem) { if($keyField!=='') - { - if(is_array($dataItem) || ($dataItem instanceof TMap)) - $keys->add($dataItem[$keyField]); - else if(($dataItem instanceof TComponent) && $dataItem->canGetProperty($keyField)) - { - $getter='get'.$keyField; - $keys->add($dataItem->$getter()); - } - else - throw new TInvalidDataValueException('datalist_keyfield_invalid',$keyField); - } + $keys->add($this->getDataFieldValue($dataItem,$keyField)); if($itemIndex===0 && $this->_headerTemplate!=='') $this->_header=$this->createItemInternal(-1,'Header',true,null); if($hasSeparator && $itemIndex>0) -- cgit v1.2.3