按钮在其他重复下重复无法获取数据行

时间:2017-10-06 07:33:22

标签: xpages repeat xpages-ssjs

我有第一个重复控件,可以从所选主产品组中查找不同类型产品的名称和图片。 在第一次重复控制中,我有另一个重复,它找到第一次重复的每种产品类型的每一篇文章,库存和描述。在第二次重复中,我有一个按钮来订购特定的文章。 奇怪的是在按钮的标签我可以把文章编号,但在onclick事件我无法得到正确的文章编号。 来自第一个重复的数据来自多米诺骨牌服务器,并放在一个视图范围数组中。第二个重复控件从iseries服务器获取它的数据,并且也放在一个viewcope数组中,以便将eveything放入表中。 代码:

`<xp:repeat id="repeat3" rows="30" value="#{viewScope.lijst}"
            var="hoofdlijn" indexVar="index1">
            <xp:text escape="true" id="produktnaam">
            <xp:this.value><![CDATA[#{javascript:hoofdlijn[0];}]]></xp:this.value>
            </xp:text>
            <xp:this.value><![CDATA[#{javascript:hoofdlijn[1];}]]></xp:this.value>
            </xp:text>

` 然后我有一个计算字段,它从给定行的iseries获取它的数据,并将它的数据放入另一个viewcope数组:“producten1” 然后是第二次重复以显示该视图范围的所有行:

<xp:repeat id="repeat5" rows="30"
                    value="#{viewScope.producten1}" var="dezelijn2">
     <xp:text escape="true" id="computedField42">
       <xp:this.value><![CDATA[#{javascript:dezelijn4[4];}]]></xp:this.value><!-- this works fine -->
     </xp:text><xp:button id="button3" styleClass="btn btn-xs btn-primary">

        <xp:this.value><![CDATA[#{javascript:"Bestel "+dezelijn4[0]}]]><!-- this gives the correct value for dezelijn4 -->
        </xp:this.value>

        <xp:eventHandler event="onclick" submit="true" refreshMode="partial" execMode="partial" refreshId="menuPanel">
                <xp:this.action>
                  <![CDATA[#{javascript:if 
                      (sessionScope.containsKey[("besteld")]){
                      sessionScope.besteld.push ([dezelijn4[0],"1"]);
                      }
                  else {
                      sessionScope.besteld = new Array();
                      sessionScope.besteld.push ([dezelijn4[0],"1"]);
                       }
                }]]></xp:this.action><!-- gives a wrong value for dezelijn4 -->
      </xp:eventHandler>
    </xp:button>
 </xp:repeat>
 </xp:repeat>

按钮的标签显示正确的商品编号(dezelijn4 [0])。 onclick事件中的文章编号似乎总是最后一个产品类型的最后一篇文章编号。

如何在我的onclick事件中获得正确的文章编号?

1 个答案:

答案 0 :(得分:0)

在你的第二块代码中,你的repeat var是dezelijn2,但是repeat中的代码是指dezelijn4。也许这是一个复制/粘贴错误,你引用了错误的变量。