如何获取组合框的显示文本而不是别名?

时间:2014-04-30 10:50:03

标签: xpages xpages-ssjs

我有一个带有一些显示值和别名的组合框,当我做

时在SSJS中
getComponent("comboboxName").getValue()

它返回别名值,这很好。但是现在我想要组合框的显示文本而不是别名值,有什么方法可以得到它吗?

1 个答案:

答案 0 :(得分:3)

定义SSJS函数getComponentLabel()

function getComponentLabel(componentId) {       
    var select = getComponent(componentId); 
    var value = select.getValue();
    if (value) {
        try {
            var list = select.getChildren();
            for (var i = 0; i < list.length; i++) { 
                if ((typeof list[i]).indexOf("SelectItems") > -1) {
                    items = list[i].getValue();
                    for (var k = 0; k < items.length; k++) {
                        if (items[k].getValue() === value) { 
                            return items[k].getLabel();
                        }
                    }
                } else if ((typeof list[i]).indexOf("SelectItem") > -1) {
                    if (list[i].getItemValue() === value) { 
                        return list[i].getItemLabel();
                    }
                }
            }   

        } catch (e) {       
        }
    }
    return value;
}

它在SelectItemsSelectItem定义中搜索组件的当前值,并返回相应的显示文本(= label)。如果没有标签,则返回值。

现在,您将获得带有

的标签
getComponentLabel("comboboxName")

此代码适用于XPage控件:

  • 列表框
  • 组合框
  • Radio Button Group
  • Dojo过滤选择

您可以将getComponentLabel()功能保存在Server JavaScript Scriptlibrary(例如Utils.jss)中,并将其作为资源集成到XPage中。

这是我的former answer to a similar question的续订版本。