openDocAsReadOnly的getComponent代码

时间:2014-02-11 16:37:40

标签: javascript xpages

是否可以区分XPage视图中的文档打开方式,具体取决于使用getComponent("programmaticname").getValue()方法的文档状态?

如果文档的状态为“已发送”,则我希望它在“编辑”模式下打开。如果文档的状态是“已审核”,那么我希望它以只读模式打开。

我想在我的视图中计算“openDocAsReadOnly”属性。有人能告诉我代码会是什么样的吗?

enter image description here

2 个答案:

答案 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>

重要的是

  • viewPanel有var="rowData"因此openDocAsReadonly可以使用rowData.引用当前行......
  • 查看列状态不仅具有“状态”作为标题,还具有程序化使用名称

    enter image description here

如果一切正常,那么如果状态为“已回复”,则“审核者”列的网址应以&action=openDocument结尾,对于所有其他情况,则应为&action=editDocument

可能导致您无法运行它的原因要容易得多:用于测试“已响应”,而不是“已审核”。在您以前的question中,您告诉状态称为“已审核”,因此答案使用此功能。但是,您的图片显示为“已回复”。