我使用一整页的覆盖物来显示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";
}
}