summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <klaer.jens@ws-klaer-jens.lcs-landwehr.de>2016-03-10 12:40:52 +0100
committerunknown <klaer.jens@ws-klaer-jens.lcs-landwehr.de>2016-03-10 12:40:52 +0100
commit9a433b428981c1423d35d9ed0e7da904f1236279 (patch)
treea1be6a9ec5449e7c4d9c93521307eae270b99100
parent2be7a27c5126855fac8d0c6f48c72066b8f87705 (diff)
TActiveCheckBoxList cannot be updated during callback, if it was initially empty, since the surrounding span with the control id is not even rendered if there are no items. To allow this, always force the span to be rendered for TActiveCheckBoxList.
-rw-r--r--framework/Web/UI/ActiveControls/TActiveCheckBoxList.php11
-rw-r--r--framework/Web/UI/WebControls/TCheckBoxList.php14
2 files changed, 18 insertions, 7 deletions
diff --git a/framework/Web/UI/ActiveControls/TActiveCheckBoxList.php b/framework/Web/UI/ActiveControls/TActiveCheckBoxList.php
index dfcb72c6..9d9c9099 100644
--- a/framework/Web/UI/ActiveControls/TActiveCheckBoxList.php
+++ b/framework/Web/UI/ActiveControls/TActiveCheckBoxList.php
@@ -63,6 +63,17 @@ class TActiveCheckBoxList extends TCheckBoxList implements IActiveControl, ICall
}
/**
+ * Since at least a control with id is needed to update the content during callback,
+ * always force the surrounding span to be rendered, so initially empty lists can be
+ * updated later.
+ *@return boolean always true
+ */
+ protected function getSpanNeeded ()
+ {
+ return true;
+ }
+
+ /**
* Override parent implementation, no javascript is rendered here instead
* the javascript required for active control is registered in {@link addAttributesToRender}.
*/
diff --git a/framework/Web/UI/WebControls/TCheckBoxList.php b/framework/Web/UI/WebControls/TCheckBoxList.php
index 9225e171..2bf62ff4 100644
--- a/framework/Web/UI/WebControls/TCheckBoxList.php
+++ b/framework/Web/UI/WebControls/TCheckBoxList.php
@@ -402,13 +402,13 @@ class TCheckBoxList extends TListControl implements IRepeatInfoUser, INamingCont
*/
public function render($writer)
{
+ if ($needSpan=$this->getSpanNeeded())
+ {
+ $writer->addAttribute('id', $this->getClientId());
+ $writer->renderBeginTag('span');
+ }
if($this->getItemCount()>0)
{
- if ($needSpan=$this->getSpanNeeded())
- {
- $writer->addAttribute('id', $this->getClientId());
- $writer->renderBeginTag('span');
- }
$this->_isEnabled=$this->getEnabled(true);
$repeatInfo=$this->getRepeatInfo();
$accessKey=$this->getAccessKey();
@@ -422,9 +422,9 @@ class TCheckBoxList extends TListControl implements IRepeatInfoUser, INamingCont
$repeatInfo->renderRepeater($writer,$this);
$this->setAccessKey($accessKey);
$this->setTabIndex($tabIndex);
- if ($needSpan)
- $writer->renderEndTag();
}
+ if ($needSpan)
+ $writer->renderEndTag();
//checkbox skipped the client control script in addAttributesToRender
if($this->getEnabled(true)