我有一个简单的视图(第一列显示复选框),顶部有一个寻呼机。我想选择一些文档然后导出到Excel(使用apache POI)。
我可以在第1页选择2个文档,但是当我切换到另一个页面以选择更多文档时,第1页上的所有选择都消失了。
如何在通过视图进行分页时保持选择?
答案 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>
希望这有帮助。