XPages - 如何在xp中显示所有记录:重复控制一次?

问题描述 投票:0回答:3

在我的XPage上,我有一个数据源定义,它是一个过滤后的视图:

<xp:this.data>
        <xp:dominoView var="viewItems" viewName="myTodoList">
            <xp:this.categoryFilter><![CDATA[#{javascript:return sessionScope.get("userFilter");}]]></xp:this.categoryFilter>
        </xp:dominoView>
    </xp:this.data>

我想通过重复控制显示数据。但我想显示数据集中的所有记录。我计算了多少xp:this.rows属性?

<xp:repeat id="repeat1" value="#{viewItems}"
    var="obj" indexVar="idx">
    <xp:this.rows><![CDATA[#{javascript:getComponent("repeat1").getDataModel().getRowCount()}]]></xp:this.rows>

</xp:repeat>
xpages xpages-ssjs
3个回答
2
投票

事实上,rows属性只是在分页开始时设置“截止”。而不是(大量)计算视图的当前大小,只需将其设置为“足够大”的值。魔术常数“9999”对我有效,但我认为MAX_INT是极限。

请记住,对于大量数据,渲染页面需要一段时间,因此您肯定会要求性能问题。

此外,Java Notes *类还有内部限制~10k后端C API引用 - 当命中时,服务器/客户端CRASHES。使用纯XSP组件应该是安全的。一旦你使用Notes *类(并且不回收)的额外代码为你的页面增添趣味,特别是在循环/重复内部,你的限制将只是该值的一小部分。


1
投票

您需要从DominoView获取项目计数,而不是从组件的数据模型中获取rowCount。

你可能会小心你想要做什么,一个视图可能非常大,用户体验很糟糕。

扩展lib具有“infiniScroll”,可能更适合用户期望的内容。


0
投票

你有没有尝试过?

<xp:this.rows><![CDATA[#{javascript:var vw:NotesView = database.getView("myTodoList");
return vw.getAllEntriesByKey(sessionScope.get("userFilter"),true).getCount().toFixed();}]]></xp:this.rows>
© www.soinside.com 2019 - 2024. All rights reserved.