1

我有一个扩展库大纲控件。我在大纲中有两个 basicLeafNodes。每个节点上的 onclick 事件都应该运行一些代码。问题是当页面打开时这两个 onClick 事件都在执行,但在您实际单击节点时似乎没有执行。

知道有什么问题吗?

<xe:outline id="outline1">

<xe:this.treeNodes>
        <xe:basicLeafNode label="Set Value 1">
            <xe:this.onClick><![CDATA[#{javascript:getComponent("inputText1").value = "123";}]]></xe:this.onClick>
        </xe:basicLeafNode>
        <xe:basicLeafNode label="Set Value2">
            <xe:this.onClick><![CDATA[#{javascript:getComponent("inputText2").value = "456";}]]></xe:this.onClick>
        </xe:basicLeafNode>
    </xe:this.treeNodes>

</xe:outline>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:br></xp:br>Value 1:&#160;
<xp:inputText id="inputText1"></xp:inputText>
<xp:br></xp:br>Value 2:&#160;
<xp:inputText id="inputText2"></xp:inputText>
4

1 回答 1

4

basicLeafNode 的 onClick 事件仅适用于客户端 JS。您需要使用每个 basicLeafNode 的 submitValue 属性,然后将 SSJS 添加到大纲控件的 onItemClick 事件中。然后,您可以使用 context.getSubmittedValue() 检查单击了哪个节点,然后采取相应措施:

<xe:outline id="outline1">
    <xe:this.treeNodes>
        <xe:basicLeafNode label="Set Value 1" submitValue="1"></xe:basicLeafNode>
        <xe:basicLeafNode label="Set Value2" submitValue="2"></xe:basicLeafNode>
    </xe:this.treeNodes>
    <xe:this.onItemClick><![CDATA[#{javascript:
        if (context.getSubmittedValue() == "1") {
            getComponent("inputText1").value = "123"
        } else if (context.getSubmittedValue() == "1") {
            getComponent("inputText2").value = "456"
        }
    }]]></xe:this.onItemClick>
</xe:outline>

来自 XPages Extension Library 书(第 240 页):

onClick 属性允许开发人员执行一段客户端 JavaScript 代码,而 submit-Value 属性允许开发人员指定一个传递回服务器的值。该值是从包含树节点的控件的 onItemClick 事件中访问的。

于 2013-02-07T20:42:20.120 回答