Я использую наложение всей страницы, чтобы отобразить маску загрузки для моих XPages. Это прекрасно работает для большинства элементов управления xp, кнопок, полей со списком, флажков и т. Д., Добавляя CSJS для вызова наложения на события onStart () и onComplete () обработчика событий. Однако это не работает с элементом управления xp: Pager. События onStart и onComplete доступны для каждой части пейджера, но, похоже, они не активируются. У меня есть несколько больших повторяющихся элементов управления, благодаря которым обновление пейджера может занять несколько секунд, поэтому наложение необходимо, чтобы пользователь знал, что пейджер работает.
Я добавил свой код в onStart и onComplete элементов xp: Pager, но они просто не запускаются. Загрузчик работает для всех других элементов 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";
}
}