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:如何计算分页视图面板行数的主要内容,如果未能解决你的问题,请参考以下文章