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

Posted

技术标签:

【中文标题】XPages:如何计算分页视图面板行数【英文标题】:XPages: how to count paginated view panel rows 【发布时间】:2013-11-21 10:11:24 【问题描述】:

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

1st:我怎样才能只计算寻呼机当前页面的行数?似乎 viewPanel.getRowCount() 从开始到当前页面获取所有行,所以如果我每页有 30 个条目并且我是在第 2 页中,它显示的是 60 而不是 30。

第二:即使我实现了上述目标,寻呼机也只会刷新视图,而我无法刷新计算域或其他面板。我可以将计算字段放在视图面板中,或者让它在每次页面更改时以某种方式刷新吗?如果可能的话,我宁愿不刷新整页...

【问题讨论】:

【参考方案1】:

考虑到计算域刷新问题,即使您设法获得了行数(例如在页面范围的 SSJS 变量上),它也不会更新计算域。

使用客户端 javascript 计算 html 表中的行可能更容易吗?

有点像..

页面加载事件:

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

【讨论】:

是的,我正在尝试解决这个问题,但它似乎仍然无法正常工作。当我有(好或坏)结果时,我会更新你...... :)【参考方案2】:

您还可以劫持从寻呼机发出的部分刷新并检查已刷新的 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。

【讨论】:

【参考方案3】:

寻呼机应该有一个“refreshID”属性,您可以在其中放置要刷新的面板的客户端 ID (!)。使用 getClientId() 计算面板的客户端 ID。

对于行数:使用 XPages 调试工具栏(来自 openNTF)检查视图面板的属性或提供当前页码的寻呼机。如果你明白了,你可以简单地使用 viewPanel.getRowCount() - (页码 * 每页的行数)来计算。

【讨论】:

以上是关于XPages:如何计算分页视图面板行数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 的分页滚动视图中缩放图像?

xpages:引用来自不同数据库/应用程序的视图

表单查询和分页查询和查询排序

xpages视图

看看JSP中怎样实现分页显示

JAVA关于数据分页