XPages:如何计算分页视图面板行

时间:2013-11-21 10:11:25

标签: view xpages lotus-domino pager rowcount

我在xpages中有一个视图面板,并有一个计算字段来显示行数。我有两个问题:

第一:我怎么才能只计算寻呼机当前页面的行?看来viewPanel.getRowCount()从开头到当前页面都获取所有行,所以如果我每页有30个条目,我就是在第2页中,它显示的是60而不是30。

第二:即使我达到了上述目的,寻呼机只刷新视图,我无法刷新计算字段或其他面板。我可以将计算字段放在视图面板中,还是在每次更改页面时以某种方式刷新它?如果可能的话,我宁愿不用整页刷新来做...

3 个答案:

答案 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() - (页码*每页的行数)进行计算。