2014-11-05 61 views
0

我有一个组合框,它的值是10,20,30,40,50当我创建一个文档,并在视图中显示数字出现,但我想显示它的标签(标签是文字)不是数字。 有人可以帮我找出如何解决这个问题。 谢谢Xpages,计算组合框的值

回答

1

使用别名类似于正常形式的用法。 使用公式项的值:

return ["- Please select -|", "ten|10", "twenty|20", "thirty|30"]; 

但是请记住,存储的值总是TEXT而不是数量。

2

我倾向于将给定复选框的值添加到Resource Bundle中,然后从xp:selectItems和xp:viewColumn值中访问该Resource Bundle。对于XP selectItems的:

首先,我将创建一个资源包,我设置为“标签”,具有以下值:

itemsList_status=Draft|0,Published|1,Archived|-1 
itemsList_delimiter=, 

这里是XP的例子组合框:

<xp:selectItems> 
<xp:this.value> 
    <![CDATA[#{javascript:return getSelectItems('status');}] 
</xp:this.value> 
</xp:selectItems> 

这里是我的getSelectItems()函数SSJS:

var getSelectItems : function(key) { 
try { 
    var returnObj = new Array(); 
    var items = null; 
    switch(key) { 
    case "status" : 
     items = @Text(label.itemsList_status).split(label.itemsList_delimiter); 
     break 
    } 
    for(var n=0, l=items.length; n < l; n++) { 
     returnObj.push(items[n]); 
    } 
    return returnObj; 
} catch(e) { 
    print(database.getTitle() + " SSJS Error for getSelectItems()"); 
    print(e.toString()); 
} 
} 

运行这个功能,它会返回3读取草稿,发布和存档的选项,而实际分别存储0,1和-1。您遇到的问题 - 以及使用这种抽象的存储标签的方法:Resource Bundle中的值+ SSJS要解决的问题 - 当您去读取值但实际上想要显示标签时...

这里是我的getSelectedValue()函数:

var getSelectedValue : function(key, thisValue) { 
try { 
    var returnObj = new Array(); 
    var items = null; 
    switch(key) { 
    case "status" : 
     items = @Text(label.itemsList_status).split(label.itemsList_delimiter); 
     break 
    } 
    var s = ""; 
    var l = ""; 
    for(var n=0, i=items.length; n < i; n++) { 
     if(items[n].indexOf("|") == -1) { 
      s = items[n]; 
      l = items[n]; 
     } else { 
      s = items[n].split("|").pop(); 
      l = items[n].split("|").shift(); 
     } 
     if(thisValue == s) { 
      return l; 
     } 
    } 
    return thisValue; 

} catch(e) { 
    print(database.getTitle() + " SSJS Error for getSelectedValue()"); 
    print(e.toString()); 
} 
} 

现在你会传递当前值与所需的标签:值资源包项目句柄,而这个功能吐出的相关标签。下面是我如何使用它在XP:一个viewColumn:

<xp:viewColumn 
id="viewColumn_status"> 
<xp:this.value><![CDATA[#{javascript:return ""}]]></xp:this.value> 
    <xp:text 
    value="#{javascript: return   
    getSelectedValue('status',thisEntry.getDocument().getItemValueString('status'))}" /> 
<xp:viewColumnHeader 
    value="#{label.viewColumnHeader_posts_status}" 
    id="viewColumnHeader_status"> 
</xp:viewColumnHeader> 
</xp:viewColumn> 

...这就是它 - 资源包进入“itemList_status”充当标签的权威大师:值对,所以你只要检查输入建筑物并解构它以存储值的标签。

希望这会有所帮助!