2014-07-09 34 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 ...”。我正是那样做的。