From b196ea0e2e9ab9078022e88326edecf1ba5b2f9f Mon Sep 17 00:00:00 2001 From: wei <> Date: Fri, 15 Sep 2006 23:49:56 +0000 Subject: Defer render() calls in callback event handler to a later stage. --- framework/Web/UI/ActiveControls/TActivePanel.php | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'framework/Web/UI/ActiveControls/TActivePanel.php') diff --git a/framework/Web/UI/ActiveControls/TActivePanel.php b/framework/Web/UI/ActiveControls/TActivePanel.php index 44f570b3..6f5c87dd 100644 --- a/framework/Web/UI/ActiveControls/TActivePanel.php +++ b/framework/Web/UI/ActiveControls/TActivePanel.php @@ -59,13 +59,23 @@ class TActivePanel extends TPanel implements IActiveControl /** * Renders and replaces the panel's content on the client-side. + * When render() is called before the OnPreRender event, such as when render() + * is called during a callback event handler, the rendering + * is defered until OnPreRender event is raised. * @param THtmlWriter html writer */ public function render($writer) { - parent::render($writer); - if($this->getActiveControl()->canUpdateClientSide()) - $this->getPage()->getCallbackClient()->replaceContent($this,$writer); + if($this->getHasPreRendered()) + { + parent::render($writer); + if($this->getActiveControl()->canUpdateClientSide()) + $this->getPage()->getCallbackClient()->replaceContent($this,$writer); + } + else + { + $this->getPage()->getAdapter()->registerControlToRender($this,$writer); + } } } -- cgit v1.2.3