我想创建一个仪表板,在视图中显示10行记录,然后系统会在一定时间后自动切换到下一页。 是不是可以将定时器设置为在XPage中的下一页中自动切换寻呼机?如果是,您是否有任何样本代码供参考?感谢。
答案 0 :(得分:1)
我前段时间创建了这样的解决方案。也许它对你也有帮助。
在requestScope“rowsPerPage”中,您可以定义每页应显示的行数,并使用requestScope“secondsPerPage”定义更改页面后的秒数。到达最后一页后,它会再次从第一页开始。
<xp:this.beforeRenderResponse><![CDATA[#{javascript:
requestScope.rowsPerPage = 4;
requestScope.secondsPerPage = 2;
if (viewScope.currentPage == null) {
viewScope.put("currentPage", 1);
} else {
if (getComponent("viewPanel1").getRowCount() > viewScope.currentPage * requestScope.rowsPerPage) {
viewScope.currentPage++;
getComponent("viewPanel1").gotoNextPage();
} else {
viewScope.currentPage = 1;
getComponent("viewPanel1").gotoFirstPage();
}
}
}]]></xp:this.beforeRenderResponse>
<xp:scriptBlock
id="scriptBlockRefresh">
<xp:this.value>
<![CDATA[
setInterval(function() {
XSP.partialRefreshPost("#{id:refreshPanel}", {})
}, #{requestScope.secondsPerPage} *1000)
]]>
</xp:this.value>
</xp:scriptBlock>
<xp:panel
id="refreshPanel">
<xp:viewPanel
rows="#{javascript:try {requestScope.rowsPerPage} catch(e) {30}}"
id="viewPanel1"
xp:key="facet1"
viewStyle="width:40em">
<xp:this.facets>
<xp:pager
partialRefresh="true"
layout="Group"
xp:key="headerPager"
id="pager1"
alwaysCalculateLast="true">
</xp:pager>
</xp:this.facets>
<xp:this.data>
<xp:dominoView
...>
</xp:dominoView>
</xp:this.data>
<xp:viewColumn
...>
</xp:viewColumn>
<xp:viewColumn
...>
</xp:viewColumn>
</xp:viewPanel>
</xp:panel>
答案 1 :(得分:0)
我还没有尝试过,但你需要使用CSJS在预定义的秒数后使用XSP.partialRefreshGet()触发部分刷新,这是服务器端无法完成的。
您可以通过编程方式设置视图的“first”属性,获取或(在第一个实例中)设置viewScope变量。您需要确保在页面刷新期间不会多次更新,可能是通过设置requestScope变量并检查是否已经设置。