如何使onStart和onComplete事件适用于xp:pager

时间:2019-05-07 08:50:52

标签: xpages overlay

我使用一整页的覆盖物来显示XPages的“正在加载”蒙版。通过添加CSJS来调用事件处理程序的onStart()和onComplete()事件上的覆盖,此方法对于大多数xp控件,按钮,组合框,复选框等均适用。但是,这不适用于xp:Pager控件。 onStart和onComplete事件可用于寻呼机的每个部分,但它们似乎没有激活。我有一些很大的重复控件,因此寻呼机刷新可能需要几秒钟的时间,因此具有覆盖层对于让用户知道寻呼机正在工作至关重要。

我已经将代码添加到xp:Pager元素的onStart和onComplete中,但是它们根本无法运行。加载程序适用于所有其他xp元素。我已经尝试了部分刷新和完全更新,但是都没有触发onStart和onComplete事件吗?

<xp:pager partialRefresh="true" id="pager1" for="displayData">
 <xp:pagerControl type="First" id="pagerControl1">
  <xp:eventHandler event="onclick" submit="true"
  refreshMode="partial" refreshId="questionBlock" 
  onStart="makeButtonInactive('','');" onComplete="makeButtonActive('','');">
  </xp:eventHandler>
 </xp:pagerControl>
 <xp:pagerControl type="Previous" id="pagerControl2">
  <xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="pagerControl1" onStart="makeButtonInactive('','');"
onComplete="makeButtonActive('','');">
  </xp:eventHandler>
 </xp:pagerControl>
 <xp:pagerControl type="Group" id="pagerControl3">
  <xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="pagerControl1" onStart="makeButtonInactive('','');"
onComplete="makeButtonActive('','');">
  </xp:eventHandler>
 </xp:pagerControl>
 <xp:pagerControl type="Next" id="pagerControl5">
  <xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="pagerControl1" onStart="makeButtonInactive('','');"
onComplete="makeButtonActive('','');">
  </xp:eventHandler>
 </xp:pagerControl>
 <xp:pagerControl type="Last" id="pagerControl6">
  <xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="pagerControl1" onStart="makeButtonInactive('','');"
onComplete="makeButtonActive('','');">
 </xp:eventHandler>
 </xp:pagerControl>
</xp:pager>

makeButtonActive()和makeButtonInactive()函数只是CSJS函数,用于显示页面覆盖或单个按钮覆盖。在这种情况下,我尝试进行整页覆盖,因此将运行的唯一代码是

onStart(document.getElementById("overlay").style.display = "block";)

onComplete(document.getElementById("overlay").style.display = "none";)

完整功能是

function makeButtonActive(btnId, innerId) {
if (btnId=="") {
    document.getElementById("overlay").style.display = "none"; //Full Page
} else {
    document.getElementById(btnId).disabled=false;      //Button Only
    document.getElementById(innerId).className=tmpclassName;
}
}

function makeButtonInactive(btnId, innerId) {
if (btnId=="") {
    document.getElementById("overlay").style.display = "block"; //Full Page
} else {    
    document.getElementById(btnId).disabled=true; //Button Only
    tmpclassName=document.getElementById(innerId).className;
    document.getElementById(innerId).className="glyphicon glyphicon-refresh gly-sm gly-spin";
}   
}

1 个答案:

答案 0 :(得分:0)

我认识的大多数开发人员都使用OpenNTF的Fredrik Norling的Standby Dialog Custom控件。通过交叉引用,您也许可以找出有什么不同,或者只是使用它可能更容易。

如果您使用引导主题,请使用this one。如果您使用的是OneUI或非标准主题,请使用this one