默认情况下,摘要列添加一个链接,用于打开 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>
如何对摘要分面进行编码,以便在单击时显示/隐藏详细信息分面?
客户端上的设置详细信息。
如果设置为 true,您应该能够使用 CSJS 将显示设置为"block"或"none",并且您应该能够使用 getComponent("dataView1").getRowIndex() 计算出需要更改的元素的 ID(假设您的 dataView 具有 ID dataView1)
这也是在 detailsOnClient 为假时执行相同操作的关键。以下代码将起作用。
var idex=getComponent("dataView1").getRowIndex();
getComponent("dataView1").toggleDetailVisible(@Text(idex+1));
您基本上是在当前 rowIndex(从 0 开始)上获得一个句柄,添加 1 以使行切换并将其转换为文本。DataView 控件有一个方法切换 DetailVisible(String),用于执行切换。
正如 Domino 9 中的@Mikael所述,切换 DetailVisible 函数似乎不起作用。根据布拉德·巴拉塞蒂斯(Brad Balassaitis)的建议,我通过获取扭曲对象的手柄并单击它来使其工作。
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();