通过视图分页时如何保持选择?

时间:2012-03-01 09:47:34

标签: xpages

我有一个简单的视图(第一列显示复选框),顶部有一个寻呼机。我想选择一些文档然后导出到Excel(使用apache POI)。

我可以在第1页选择2个文档,但是当我切换到另一个页面以选择更多文档时,第1页上的所有选择都消失了。

如何在通过视图进行分页时保持选择?

3 个答案:

答案 0 :(得分:2)

可以使用

来检索所选ID的列表
viewPanel.getSelectedIds()

但我认为,由于您的问题,这仅适用于当前页面。一个解决方案是添加一个自定义复选框列,其中包含serveride onclick事件,该事件将添加 当前选择注意到一个范围的var(包含一个向量)。在加载行时,您将检查是否找到此var,如果是,请选中该复选框。在页面之间切换时,可以选择更多文档。

完成选择后,您可以使用生成的向量生成Excel文档。生成完成后再次清理范围变量,然后就完成了。

很容易就像馅饼;)

答案 1 :(得分:0)

您是否尝试过扩展程序库中的pagerSaveState

不确定它存储了多少状态信息。

答案 2 :(得分:0)

乌尔里希,

这将是一种蛮力;但我可能会有一个建议。我没时间实施它,但我会尝试解释它是如何工作的。

我们这里有两个问题。我们必须在一个页面上保存所选项目,如果再次返回同一页面,则恢复它们。

视图列中的常用复选框不起作用,因为我们不允许注入其事件。因此,您必须在列中创建自己的复选框,值为note id。

选定的ID可能存储在viewScope中。在复选框中,您应根据viewScope中存储的列表选中或取消选中该复选框。

您还可以创建一个RPC控件,以便在后台与viewscope对象进行通信。它必须有一个方法:rpc.myMethod(noteId,checked)。它将获取noteId,从viewScope添加/删除。

<xp:viewColumn id="viewColumn3" displayAs="hidden">
<xp:this.facets>
    <xp:viewColumnHeader xp:key="header" id="viewColumnHeader3"></xp:viewColumnHeader>
</xp:this.facets>
<input class="xspCheckBoxViewColumn" type="checkbox" value="#{javascript:viewEntry.getNoteID()}" style="margin: 0px 2px; height: 12px;" onChange="rpc.myMethod(this.value, this.checked)"/></xp:viewColumn>

希望这有帮助。