是否可以区分XPage视图中的文档打开方式,具体取决于使用getComponent("programmaticname").getValue()
方法的文档状态?
如果文档的状态为“已发送”,则我希望它在“编辑”模式下打开。如果文档的状态是“已审核”,那么我希望它以只读模式打开。
我想在我的视图中计算“openDocAsReadOnly”属性。有人能告诉我代码会是什么样的吗?
答案 0 :(得分:1)
确保在所有属性>>的viewPanel中定义变量名称。数据>> var(rowData是一个常用的变量名称)
此变量包含NotesXspViewEntry类型的对象,因此它知道一个名为.getColumnValue(colName:String)的方法,其中colName是Notes视图列的编程名称(我假设它名为“Status”)。
因此,您的openDocAsReadonly属性可以包含如下代码:
rowData.getColumnValue("Status")=="Responded"
修改强>
对不起,这里可能犯了错误;可能由于时间错误而无法正常工作。相反,您可以尝试通过在viewColumn的pageUrl属性中定义它来覆盖标准URL链接。快速测试揭示了这样的代码(我遵循Knut Herrmann的观察):
var d = entry.getColumnValue("Status");
var a="editDocument";
if(d=="Responed") {
a="openDocument"
}
"/yourDocXpage.xsp?documentId=" + entry.getUniversalID() + "&action=" + a
不确定这是否是所有解决方案中最好的......
答案 1 :(得分:1)
这是一个有效的例子:
<xp:viewPanel
rows="30"
id="viewPanel1"
var="rowData">
<xp:this.facets>
<xp:pager
...>
</xp:pager>
</xp:this.facets>
<xp:this.data>
<xp:dominoView
var="view1"
viewName="yourView">
</xp:dominoView>
</xp:this.data>
<xp:viewColumn
id="viewColumn2"
displayAs="link"
columnName="Reviewer"
openDocAsReadonly="#{javascript:rowData.getColumnValue('Status') === 'Responded'}">
</xp:viewColumn>
重要的是
var="rowData"
因此openDocAsReadonly可以使用rowData.
引用当前行...... 查看列状态不仅具有“状态”作为标题,还具有程序化使用名称
如果一切正常,那么如果状态为“已回复”,则“审核者”列的网址应以&action=openDocument
结尾,对于所有其他情况,则应为&action=editDocument
。
可能导致您无法运行它的原因要容易得多:用于测试“已响应”,而不是“已审核”。在您以前的question中,您告诉状态称为“已审核”,因此答案使用此功能。但是,您的图片显示为“已回复”。