Xpages-数据表:如果链接具有特定标签值,则在链接上单击事件

时间:2014-07-11 08:18:25

标签: javascript datatable xpages alert lotus-notes

在我的Xpage上,我有一个数据表,我在其中从数组加载数据(arrayPerson)

a busy cat http://de.share-your-photo.com/img/1bf1672dec.jpg

在第一列中,我有一个链接字段(核心控件),我可以从中获得不同的名称。

我试图解决的是: 如果名称是例如"托马斯"我想链接到google.de 但如果名字是" Katrin"我想弹出一个警告窗口,里面有文字,例如警告。("没有链接"))并且没有链接到谷歌,只有警报

<xp:link escape="true" id="link1">
<xp:this.text><![CDATA[#{javascript:arrayPerson[0]}]]>  </xp:this.text>
</xp:link>

这可能吗?

2 个答案:

答案 0 :(得分:1)

仅在您的情况下将链接的value设置为网址 arrayPerson [0] ==&#39; Thomas&#39; 是真的。否则返回一个空字符串(=点击链接确实&#34;没有&#34;)。

如果条件相反,则使用客户端代码呈现onclick事件 arrayPerson [0]!=&#39; Thomas&#39; 。只有在渲染条件为真时,才会执行单击警告框的CSJS代码:

<xp:link
    escape="true"
    text="#{javascript:arrayPerson[0]}"
    id="link1"
    value="#{javascript:arrayPerson[0] == 'Thomas' ? 'http://www.google.de' : ''}">
    <xp:eventHandler
        event="onclick"
        submit="false"
        rendered="#{javascript:arrayPerson[0] != 'Thomas'}"
        script="alert('No Link')">
    </xp:eventHandler>
</xp:link>

答案 1 :(得分:0)

有两种选择。

一种是使用“事件”面板。在Client-Side事件框中输入您的if语句。如果任何客户端代码的结果是布尔值true,则运行服务器端代码。否则,服务器端代码不会运行。因此,如果没有“托马斯”的警告,则返回true,但对于“Katrin”,请发出警报,然后返回false。

另一个选项是计算链接的value属性。您将通过编写服务器端JavaScript进行计算,但结果必须是字符串,可以将其解析为客户端JavaScript ,请参阅下面的示例。这是一个很大的问题,但是一旦你理解了这一点,除非你需要输出大量的CSJS,否则它不会太糟糕。

<xp:this.value>
<![CDATA[#{javascript:if (arrayPerson[0]=="Katrin") {
return "alert('No Link');";
}
</xp:this.value>