XPage - 如何获得复选框组的正确值?

时间:2013-02-26 16:20:39

标签: checkbox xpages

在我的简单XPage中,我有一个带有公式项的复选框组:

document1.getValue("cHumanNames") + "|" + document1.getValue("cUserID")

列表cHumanNamescUserID没问题,因此我看到并检查John Smith并提交john234。根据需要。

我被要求在单独的列表中显示已检查的名称(用于控制...),似乎我无法从userID返回。必须有一种方法来选择用于显示的值:

getcomponent("checkBoxGroup1").??????

当然,如果我使用getValue(),我会获得ID列表,但我需要这些名称。这个价值在哪里?

3 个答案:

答案 0 :(得分:1)

您可以修改此XSnippet以搜索别名值的标签:

http://openntf.org/XSnippets.nsf/snippet.xsp?id=get-selectable-values-of-a-component

或者您可以使用变量索引为您的值找到正确的标签(存储在文档中)。

答案 1 :(得分:1)

当您查看生成的复选框组HTML源时,您会发现类似这样的内容:

<label><input name="view:_id1:checkBoxGroup1" value="john234" type="checkbox"> John Smith</input></label>

基本上标签John Smith永远不会被提交到数据源。如果您正在寻找SSJS实施,那么Sven Hasselbach的答案将会奏效。如果您正在寻找客户端JavaScript实现,那么下面的代码片段应该可以工作:

function getCheckedValues() {
    var checkedValues = new Array();
    dojo.query("input[name=\"#{id:checkBoxGroup1}\"]").forEach(
        function(node) {
            if (node.checked) {
                checkedValues.push(node.parentNode.innerText);
            }
        }
    );
    return checkedValues.join(", ");
}

上面的代码段是针对名称为checkBoxGroup1的复选框组编写的。

答案 2 :(得分:0)

在服务器端,没有简单的方法来获取显示值 - 所选值仅作为别名保留,其余值仅用于渲染。您可以尝试添加额外的抽象层,并创建一个地图,为您的复选框和列表提供值。该列表将仅使用地图将选中的值转换为显示值。