1

我有一个视图面板控件,它显示文档列表和每个文档的一些信息。其中一列是文档中记录的项目的存储位置。我想让该列成为可点击的链接,因此当用户单击它时,他们会转到另一个 XPage,该 XPage 显示具有该存储位置的所有文档。一个例子:

ID          Location
12345678    ABCD
98765432    WXYZ
11223344    ABCD

单击 ID 将打开该文档,但单击 ABCD 将转到一个 XPage,该 XPage 将显示位置为 ABCD 的所有文档。

这是我为列值所拥有的:

<xp:this.value><![CDATA[#{javascript:return "<script>sessionScope.set(\"trayId\",\"+rowData.getColumnValue('StorageLocationID')+\");</script><a href=\"./location.xsp\">"+rowData.getColumnValue('StorageLocationID')+"</a>";}]]></xp:this.value>

它正确显示值并转到正确的 XPage,但我不知道如何设置 sessionScope 变量,我可以使用它来过滤 location.xsp 上的数据源以仅显示一个位置。我想我必须在列中创建 HTML,因为当我设置“将列中的值显示为链接”并使用 onclick 事件为位置名称设置 sessionScope 变量然后打开 location.xsp 时,它会引发错误。

我可能可以在重复控件中执行此操作,但似乎应该有一种方法可以在视图面板中完成这项工作,因为我觉得我真的很接近。

4

1 回答 1

2

不要设置 sessionScope 变量,只需?location=在 URL 中添加一个参数:

<xp:this.value><![CDATA[#{javascript:"<a href=\"./location.xsp?location=" + rowData.getColumnValue('StorageLocationID') + "\">"+rowData.getColumnValue('StorageLocationID')+"</a>"}]]></xp:this.value>

使用 location.xsp 中的 URL 位置参数标记位置列contentType="HTML"并使用 URL 位置参数来过滤位置视图:

    <xp:this.data>
        <xp:dominoView var="viewLocations" viewName="Locations"
            keys="#{javascript:context.getUrlParameter('location')}"
            keysExactMatch="true">
        </xp:dominoView>
    </xp:this.data>
于 2013-05-07T15:50:53.187 回答