2017-10-06 79 views
0

我有发现的名称和不同类型的从选定的主要产品组产品图片的第一重复控制。 在这个第一次重复控制中,我有另一个重复,可以找到第一次重复的每种产品类型的每一篇文章,库存和说明。在这第二个重复中,我有一个按钮来订购特定的文章。 奇怪的是在按钮的标签中我可以放置文章编号,但是在onclick事件中,我无法获得正确的文章编号。 来自第一次重复的数据来自多米诺服务器,并放入一个视域数组中。第二个重复控件get从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的用于给定行的数据的计算字段,并把的它的数据到另一个viewscope数组:“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事件的正确文章编号?

+0

这是正确的行'(sessionScope.containsKey [( “besteld”)])'?我不记得以前看过那种格式。您是否可以尝试存储任何值,例如一个字符串不在数组中? –

+0

这行只是查看sessionScope.besteld是否存在或包含数据。如果它已经存在,我只需在推送中添加数据。如果它不存在,则创建sessionScope,然后使用推送添加数据。 –

回答

0

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

+0

这确实是一个复制粘贴错误。 dezelijn4是正确的var值。我会相应地更改上面的代码。 –