/** * Returns a javascript that can be used to trigger client-side postback event. * You have to add your own javascript surrounding elements if necessary. * @param TComponent the control that needs to trigger the postback event * @param string a parameter to be included with the postback event */ public function getPostBackClientEvent($target, $param) { if (is_null($this->form)) { if (is_null($this->masterPage)) { throw new Exception('A form control is required'); } else { return $this->masterPage->getPostBackClientEvent($target, $param); } } $name = $target->getUniqueID(); $postBack = self::JS_POSTBACK; $event = "{$postBack}('{$name}','{$param}');"; if ($this->isBeginScriptRegistered(self::JS_POSTBACK)) { return $event; } $formName = $this->form->getClientID(); $script = "\nfunction {$postBack}(eventTarget, eventParameter) {\n\tvar validation = typeof(Prado) != 'undefined' && typeof(Prado.Validation) != 'undefined';\n\tvar theform = document.getElementById ? document.getElementById(\"{$formName}\") : document.forms[\"{$formName}\"];\n\ttheform.__EVENTTARGET.value = eventTarget.split(\"\$\").join(\":\");\n\ttheform.__EVENTPARAMETER.value = eventParameter;\n\tif(!validation || Prado.Validation.OnSubmit(theform))\n\t\ttheform.submit();\n}\n"; $this->registerBeginScript(self::JS_POSTBACK, $script); $this->registerHiddenField(self::INPUT_EVENTTARGET, ''); $this->registerHiddenField(self::INPUT_EVENTPARAMETER, ''); return $event; }