checkboxgroup仅返回最后选择的值

时间:2017-02-23 12:55:19

标签: xpages-ssjs xpages-extlib

我有一个重复控件并使用viewScope数组中的项填充复选框组。示例代码为:

<xp:repeat id="repeat4" rows="100" value="#{viewScope.choices}"
    indexVar="rownumber" var="row" first="0">

    <xp:checkBoxGroup id="checkBoxGroup2" layout="lineDirection">
        <xp:selectItems>
            <xp:this.value><![CDATA[#{javascript:if (viewScope.choices[rownumber].get(1)==viewScope.line){
            return viewScope.choices[rownumber].get(0)
           }}]]></xp:this.value>
        </xp:selectItems>
    </xp:checkBoxGroup>
    <xe:tooltip id="tooltip1" for="checkBoxGroup2">
        <xe:this.label><![CDATA[#{javascript:return viewScope.choices[rownumber].get(1)}]]></xe:this.label>
    </xe:tooltip>
</xp:repeat>

我用以下方法读取选中的值:@Text(getComponent(&#34; checkBoxGroup2&#34;)。getSubmittedValue());

问题在于我似乎只能以这种方式读取最后选择/取消选择的值。

我想这与没有返回数组的选择项有关,但是如何返回包含给定数据的数组呢?

1 个答案:

答案 0 :(得分:0)

在这种情况下,您无法使用checkBoxGroup。由repeat创建的每个checkBoxGroup都是一个自己的控件,它们没有相互连接。

使用简单的checkBox控件,并在视图范围变量数组中写入选定的值:

<xp:this.beforePageLoad><![CDATA[#{javascript:
    if (!viewScope.selected) {
        viewScope.selected = new Array(viewScope.choices.length);
    }
}]]></xp:this.beforePageLoad>
<xp:repeat
    id="repeat4"
    rows="100"
    value="#{javascript:viewScope.choices}"
    indexVar="rownumber"
    var="row"
    first="0">
    <xp:panel
        id="panelCheckBox"
        style="display: inline-block;">
        <xp:checkBox
            id="checkBox1"
            text="#{row[0]}"
            value="#{viewScope.selected[rownumber]}"
            checkedValue="#{row[0]}"
            uncheckedValue="#{javascript:''}" />
    </xp:panel>
    <xe:tooltip
        id="tooltip1"
        for="panelCheckBox"
        position="below"
        label="#{row[1]}" />
</xp:repeat>

结果在viewScope.selected然后。