我使用全页覆盖来显示我的XPages的加载掩码。这对于大多数xp控件、按钮、组合框、复选框等都很有效,方法是添加CSJS来调用事件处理程序的onStart()和onComplete()事件。但是,这不适用于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";
}
}https://stackoverflow.com/questions/56018836
复制相似问题