2016-06-15 5 views
1

Es ist möglich, eine onClientLoad Eventhandler zu einem Viewpanel hinzuzufügen:Abfangen der Seitenzahl eines Pagers Being Clicked

https://xcellerant.net/2013/01/14/viewpanel_onclientload

Anklicken eines Pagers Ergebnisse in der onClientLoad abgefeuert werden.

Frage: Ist es möglich, die Seitenzahl des Pager zu erfassen, auf den geklickt wird?

+1

Warum wollen Sie/die spezifische „Seite brauchen Nummer "des Pager? –

+0

Um zu synchronisieren, was in einem Iframe in einer Navigationslösung angezeigt wird. Wir haben 10 Artikel pro Seite, wenn Sie z. Seite 3 sollte dann der oberste Artikel (Nummer 21) aktiviert und angezeigt werden. –

Antwort

1

Fügen Sie ein On-Click-Ereignis zu jeder Seitennummer innerhalb des Pagers in XPages onClientLoad CSJS-Code hinzu.
Verwenden dojo.query alle a-Tags innerhalb Pager zu bekommen:

dojo.query('[id$=pagerWithClickEvents] a').forEach(function(entry) { 
     entry.addEventListener("click", function() { 
      alert(this.innerHTML); 
     }); 
    }); 

enter image description here

Diese XPage ist ein funktionierendes Beispiel:

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view 
    xmlns:xp="http://www.ibm.com/xsp/core"> 
    <xp:viewPanel 
     rows="3" 
     value="#{view1}" 
     id="viewPanel1"> 
     <xp:this.facets> 
      <xp:pager 
       partialRefresh="true" 
       layout="Previous Group Next" 
       xp:key="headerPager" 
       id="pagerWithClickEvents"> 
      </xp:pager> 
     </xp:this.facets> 
     <xp:this.data> 
      <xp:dominoView 
       var="view1" 
       databaseName="names.nsf" 
       viewName="People"> 
      </xp:dominoView> 
     </xp:this.data> 
     <xp:viewColumn 
      columnName="$17" 
      id="viewColumn1"> 
      <xp:viewColumnHeader 
       value="Name" 
       id="viewColumnHeader1"> 
      </xp:viewColumnHeader> 
     </xp:viewColumn> 
     <xp:viewColumn 
      columnName="$16" 
      id="viewColumn4"> 
      <xp:viewColumnHeader 
       value="E-Mail" 
       id="viewColumnHeader4"> 
      </xp:viewColumnHeader> 
     </xp:viewColumn> 
     <xp:eventHandler 
      event="onClientLoad" 
      submit="false"> 
      <xp:this.script><![CDATA[ 
      dojo.query('[id$=pagerWithClickEvents] a').forEach(function(entry) { 
       entry.addEventListener("click", function() { 
        alert(this.innerHTML); 
       }); 
      }); 
     ]]></xp:this.script> 
     </xp:eventHandler> 
    </xp:viewPanel> 
</xp:view> 
+1

Danke! Es funktioniert gut. Allerdings musste ich die dojo.query innerhalb von viewPanel als onClientLoad eventHandler hinzufügen, ansonsten wurde nur beim ersten Klick gefeuert, nicht bei nachfolgenden Klicks. Mein nächster Schritt ist jetzt, SSJS von diesem CSJS auszulösen. –

+0

Oh danke, das war der Teil, den ich verpasst habe :) - Ich habe mein Beispiel XPage aktualisiert. Es funktioniert jetzt auch für Pager innerhalb der Ansicht. –

Verwandte Themen