2014-11-05 64 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」充當標籤的權威大師:值對,所以你只要檢查輸入建築物並解構它以存儲值的標籤。

希望這會有所幫助!