我在另一个重复控件中有一个重复控制。这个概念是创造一个类似日历的东西。所以我想创建一个2维重复,我使用一个重复来垂直创建“行”,并在其中另一个重复创建水平列。第二个重复控件在div控件内有一个输入文本控件。代码如下:
<xp:repeat id="repeat4" rows="30">
<xp:this.value>
<![CDATA[#{javascript:var projects2 = new Array("Project 1","Project 2");
return projects2;}]]>
</xp:this.value>
<xp:repeat id="repeat3" rows="31">
<xp:this.value><![CDATA[#{javascript:var inBoxes = new java.util.Vector();
for(i=1;i<=5;i++){
inBoxes.add(i);
}
return inBoxes;}]]>
</xp:this.value>
<xp:div id="DivInputs" styleClass="DivInputs">
<xp:inputText id="inputText1"
style="width:100%">
</xp:inputText>
</xp:div>
</xp:repeat>
</xp:repeat>
我现在想要获取输入字段的值,所以如果我使用它,它可以工作:
repeat4.setRowIndex(0);
repeat3.setRowIndex(0);
sum = sum + inputText1.getValueAsString();
但是当我执行此循环时,它只获得第一行单元格值:
for(i=0;i<2;i++){
repeat4.setRowIndex(i);
repeat3.setRowIndex(0);
sum = sum + inputText1.getValueAsString();
}
有什么想法吗?
答案 0 :(得分:1)
您需要改变方法。应该使用绑定来执行值,而不是getValue。所以做一些像
这样的事情 var x = [[0,0,0,0,0,0,0],[...],....];
viewScope.calendar = x;
然后将控件绑定到变量。这消除了检查确切位置或变量名称的需要。