2014-07-09 31 views
3

我需要構建重複控制或(視圖或數據表)使用範圍變量作爲數據源。和範圍的變量應該是一個數組..甚至只是JavaScript數組..xpages重複控制範圍變量作爲數據源

範圍的變量:

viewScope.MY_TEST = new Array(); 
viewScope.MY_TEST.push("Test1"); 
viewScope.MY_TEST.push("Test2"); 

或數組:

var my_arr = new Array(); 
my_arr.push("Test1"); 
my_arr.push("Test2"); 

或者甚至是對象/二維陣列:

viewScope.MY_TEST = []; 
viewScope.MY_TEST .push([value1, value2]); 

所以重複控制應該包含例如兩次計算機領域 一個被綁定到值1,另一個值2 ...

或者給我一個維數組的例子..

謝謝

回答

3

我明白你的問題的方式,你想要在重複控制中使用二維viewScope變量。

您可以在JavaScript中定義這樣一個二維數組是這樣的:

viewScope.myTest = 
     [["Val_1_1", "Val_1_2"], ["Val_2_1", "Val_2_2"], ["Val_3_1", "Val_3_2"]]; 

或類似你的第三個代碼段:

viewScope.myTest = []; 
viewScope.myTest.push(["Val_1_1", "Val_1_2"]); 
viewScope.myTest.push(["Val_2_1", "Val_2_2"]); 
viewScope.myTest.push(["Val_3_1", "Val_3_2"]); 

通過第一陣列級別的重複控制迭代,並寫入第二級變成變量row

<xp:repeat 
    id="repeat1" 
    rows="30" 
    var="row" 
    value="#{viewScope.myTest}"> 
    <xp:text value="#{row[0]}" /> 
    &#160; 
    <xp:text value="#{row[1]}" /> 
    <br /> 
</xp:repeat> 

您可以使用row[0]row[1]訪問這些值。

這個例子呈現以下輸出:

Val_1_1 Val_1_2 
Val_2_1 Val_2_2 
Val_3_1 Val_3_2 
+0

That works .. Thank you Mr. Herrmann – VladP

2

這是值得看的java.util.ArrayList或java.util.HashMap中。第一個是一維物體,第二個是二維物體。您可能會獲得更好的鍵入支持。 HashMap可能看起來很可怕,但實際上它非常熟悉 - 範圍變量是HashMaps。 myMap.keySet()是用作重複的「價值」,然後假設var="key"您可以使用myMap.get(key)來獲取該值。

如果您想使用JavaScript對象,請參閱我在2013年IBM Connect會議上爲TLCC網絡研討會做的視頻,內容是Mike McGarel的「It's Not Herculean ...」。我正是那樣做的。