From 6b1d87352911e43672b46b7a65a3c90dd8e5b8b1 Mon Sep 17 00:00:00 2001 From: wei <> Date: Sat, 30 Sep 2006 01:49:58 +0000 Subject: Fixed #403 --- .../ActiveControls/TActiveListControlAdapter.php | 30 +++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) (limited to 'framework/Web/UI') diff --git a/framework/Web/UI/ActiveControls/TActiveListControlAdapter.php b/framework/Web/UI/ActiveControls/TActiveListControlAdapter.php index 9bdef077..49cb07c8 100644 --- a/framework/Web/UI/ActiveControls/TActiveListControlAdapter.php +++ b/framework/Web/UI/ActiveControls/TActiveListControlAdapter.php @@ -44,8 +44,11 @@ class TActiveListControlAdapter extends TActiveControlAdapter implements IListCo public function setSelectedIndex($index) { if($this->canUpdateClientSide()) + { + $this->updateListItems(); $this->getPage()->getCallbackClient()->select( $this->getControl(), 'Index', $index); + } } /** @@ -56,6 +59,7 @@ class TActiveListControlAdapter extends TActiveControlAdapter implements IListCo { if($this->canUpdateClientSide()) { + $this->updateListItems(); $n = $this->getControl()->getItemCount(); $list = array(); foreach($indices as $index) @@ -77,8 +81,11 @@ class TActiveListControlAdapter extends TActiveControlAdapter implements IListCo public function setSelectedValue($value) { if($this->canUpdateClientSide()) + { + $this->updateListItems(); $this->getPage()->getCallbackClient()->select( $this->getControl(), 'Value', $value); + } } /** @@ -89,6 +96,7 @@ class TActiveListControlAdapter extends TActiveControlAdapter implements IListCo { if($this->canUpdateClientSide()) { + $this->updateListItems(); $list = array(); foreach($values as $value) $list[] = $value; @@ -104,7 +112,10 @@ class TActiveListControlAdapter extends TActiveControlAdapter implements IListCo public function clearSelection() { if($this->canUpdateClientSide()) + { + $this->updateListItems(); $this->getPage()->getCallbackClient()->select($this->getControl(), 'Clear'); + } } /** @@ -112,11 +123,14 @@ class TActiveListControlAdapter extends TActiveControlAdapter implements IListCo */ public function updateListItems() { - if($this->canUpdateClientSide() && $this->getControl()->getHasItems()) + if($this->canUpdateClientSide()) { $items = $this->getControl()->getItems(); - if($items instanceof TActiveListItemCollection && $items->getListHasChanged()) - $this->getPage()->getCallbackClient()->setListItems($this->getControl(), $items); + if($items instanceof TActiveListItemCollection + && $items->getListHasChanged()) + { + $items->updateClientSide(); + } } } } @@ -182,6 +196,16 @@ class TActiveListItemCollection extends TListItemCollection return $this->_hasChanged; } + /** + * Update client-side list items. + */ + public function updateClientSide() + { + $client = $this->getControl()->getPage()->getCallbackClient(); + $client->setListItems($this->getControl(), $this); + $this->_hasChanged=false; + } + /** * Inserts an item into the collection. * The new option is added on the client-side during callback. -- cgit v1.2.3