2017-10-06 2 views
0

Ich habe eine erste Wiederholungskontrolle, die den Namen und Bilder der verschiedenen Arten von Produkten aus der ausgewählten Hauptproduktgruppe findet. In dieser ersten Wiederholungskontrolle habe ich eine weitere Wiederholung, die jeden einzelnen Artikel, Lagerbestand und Beschreibung für jeden Produkttyp der ersten Wiederholung findet. In dieser zweiten Wiederholung habe ich einen Knopf, um den spezifischen Artikel zu bestellen. Das Seltsame ist in der Beschriftung des Buttons Ich kann die Artikelnummer eingeben, aber im Onclick Event kann ich nicht die richtige Artikelnummer bekommen. Die Daten der ersten Wiederholung kommen vom Domino-Server und werden in ein viewscope-Array eingefügt. Die zweite Wiederholungssteuerung erhält Daten von einem iseries-Server und wird auch in ein viewscope-Array gestellt, um alles in eine Tabelle zu bringen. Der Code:Taste in Wiederholung unter anderen Wiederholung kann nicht Daten Zeile

`<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> 

` Dann habe ich ein berechnetes Feld, das es Daten aus iseries für die gegebene Linie und setzte es sich die Daten in ein anderen viewscope Array wird immer:„producten1“ Dann kommt die zweite Wiederholung anzuzeigen alle Linien dieses viewscope:

<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> 

Das Etikett der die Artikelnummer der Tastenanzeige (dezelijn4 [0]) richtig. Die Artikelnummer im onclick-Ereignis scheint immer die letzte letzte Artikelnummer des allerletzten Produkttyps zu sein.

Wie kann ich die korrekte Artikelnummer in meinem onclick-Event erhalten?

+0

Ist diese Zeile korrekt? '(SessionScope.containsKey [(" besteld ")])'? Ich kann mich nicht erinnern, dieses Format vorher gesehen zu haben. Können Sie versuchen, nur einen Wert zu speichern, z. eine Zeichenfolge nicht in einem Array? –

+0

Diese Zeile dient nur dazu festzustellen, ob der sessionScope.besteld existiert oder Daten enthält. Wenn es bereits existiert, füge ich einfach Daten mit dem Push hinzu. Wenn es nicht existiert, erstelle ich das sessionScope und füge dann die Daten mit dem Push hinzu. –

Antwort

0

In Ihrem zweiten Stück Code ist Ihre Wiederholung var dezelijn2, aber der Code innerhalb der Wiederholung bezieht sich auf dezelijn4. Vielleicht ist es ein Kopier-/Einfügefehler und Sie verweisen auf die falsche Variable.

+0

Das ist in der Tat eine Kopie einfügen Fehler. dezelijn4 ist der korrekte var-Wert. Ich werde den obigen Code entsprechend ändern. –