1

默认情况下,摘要列添加一个链接以打开在 dataView 的 pageName 属性中指定的基础文档。我有一个用例,我想将应用程序保留在 dataView 中,而不是打开任何“documentXPage”。

我知道这可以重复完成,但是 dataView 的其他部分/功能可以很好地用于应用程序,所以理想情况下我只是希望覆盖 summaryColumn 的默认行为。

为了覆盖链接行为,我将摘要列添加为方面,而不是属性,如下所示:

<xp:this.facets>
    <xp:panel xp:key="summary" id="summaryPanel">
        <xp:text escape="false" id="computedField3">
            <xp:this.value><![CDATA[#{javascript:
var custName = viewEntry.getColumnValue("Customer");
return "<h4>"+custName+"</h4>"}]]>
                   </xp:this.value>
        </xp:text>
    </xp:panel>
    <xp:panel xp:key="detail" id="detailsPanel" readonly="true">
            <xp:text escape="true" id="computedField1">
            <xp:this.value><![CDATA[{javascript:
viewEntry.getDocument().getItemValueString("Address") + ",      " +
viewEntry.getDocument().getItemValueString("City") + ", " +
viewEntry.getDocument().getItemValueString("State")}]]>
                    </xp:this.value>
            </xp:text>
   </xp:panel>
<\xp:this.facets>

如何对摘要方面进行编码以在单击时显示/隐藏详细信息方面?

4

2 回答 2

2

这取决于设置 detailsOnClient。

如果设置为 true,您应该能够使用 CSJS 将显示设置为“block”或“none”,并且您应该能够使用 getComponent("dataView1") 计算出需要更改的元素的 ID .getRowIndex() (假设您的 dataView 的 ID 为 dataView1)

如果 detailsOnClient 为 false,这也是执行相同操作的关键。以下代码将起作用。

var idex=getComponent("dataView1").getRowIndex();
getComponent("dataView1").toggleDetailVisible(@Text(idex+1));

您基本上得到了当前 rowIndex 的句柄(从 0 开始),添加 1 以使行切换并将其转换为文本。DataView 控件有一个方法 toggleDetailVisible(String) 用于进行切换。

于 2012-09-25T12:12:54.333 回答
1

正如@Mikael 在 Domino 9 中所述,toggleDetailVisible 函数似乎不起作用。根据 Brad Balassaitis 的建议,我通过获取 twistie 对象的句柄并单击它来使其工作。

var myid = "#{id:link3}";
var parts = myid.split(":");
var outparts = [];
for(var idx=0; idx<parts.length-1; idx++){
    outparts[idx] = parts[idx];
}
outparts[outparts.length-1] += "_shimg";
var bid = outparts.join(":");

var btn = document.getElementById(bid);
btn.click();
于 2013-06-25T19:31:44.907 回答