コード例 #1
0
 /**
  * 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;
 }