我在xpages中有一个视图面板,并有一个计算字段来显示行数。我有两个问题:
第一:我怎么才能只计算寻呼机当前页面的行?看来viewPanel.getRowCount()从开头到当前页面都获取所有行,所以如果我每页有30个条目,我就是在第2页中,它显示的是60而不是30。
第二:即使我达到了上述目的,寻呼机只刷新视图,我无法刷新计算字段或其他面板。我可以将计算字段放在视图面板中,还是在每次更改页面时以某种方式刷新它?如果可能的话,我宁愿不用整页刷新来做...
答案 0 :(得分:1)
考虑到计算字段刷新问题,即使您设法获得行数(例如,在页面范围SSJS变量上),它也不会更新计算字段。
使用clientide javascript计算HTML表格中的行可能更容易?
类似......
页面onload事件:
get the HTML table
get the table rows property (array of rows in the table)
number or rows = that value (1st row = TH (header) row if there is one = row 0)
使用javsscript将该值插入已知的DIV
答案 1 :(得分:1)
您还可以劫持从寻呼机发出的部分刷新,并检查已刷新的ID。如果ID与您的视图面板的ID匹配,您可以执行另一次部分更新以更新另一个面板。
劫持部分刷新的示例代码:
var sysHijackPartialRefresh = function(){
XSP._inheritedPartialRefresh = XSP._partialRefresh;
XSP._partialRefresh = function( method, form, refreshId,options) {
if (options){
if (!options.onComplete) {
options.onStart = function(){
};
options.onComplete = function(){
if (refreshId == "<client id of view panel>") {
// issue another partial refresh
XSP.partialRefreshGet(<client id of the other panel>);
}
};
}
}
this._inheritedPartialRefresh(method, form, refreshId, options); }
}
XSP.addOnLoad(sysHijackPartialRefresh);
有关部分更新的详细信息,请参阅http://xpageswiki.com/web/youatnotes/wiki-xpages.nsf/dx/Work_with_events_and_partial_or_full_refresh。
答案 2 :(得分:0)
寻呼机应具有“refreshID”属性,您可以在其中放置要刷新的面板的客户端ID(!)。使用getClientId()计算面板的客户端ID。
对于行计数:使用XPages调试工具栏(来自openNTF)检查视图面板或寻呼机的属性,该属性为您提供当前页码。如果你有这个,你可以简单地使用viewPanel.getRowCount() - (页码*每页的行数)进行计算。