2014-05-01 2 views
1

J'ai trouvé quelques questions similaires dans stackoverflow mais rien ne correspond exactement. Je tente de modifier un projet Xpages où les résultats de la recherche sont affichés dans un panneau Affichage dynamique. La première colonne des résultats de la recherche est un lien qui ouvre l'enregistrement dans la même page. Ce que je veux faire est d'avoir ce lien ouvrir l'enregistrement dans une page séparée. C'est la partie "Dynamic" de la vue qui prête à confusion, je pense qu'il n'y a pas "Column Name" ou "Column View" à ajouter dans un window.open ou un target="_blank" que je peux voir. Comment pourrais-je m'y prendre s'il vous plaît?Xpages Link Ouvrir l'onglet du navigateur

La section pertinente de XPage a seulement ce qui suit;

<xp:panel id="maincontentpanel"> 
    <xe:dynamicViewPanel rows="30" id="dynamicViewPanel1" width="100%"> 
     <xe:this.data> 
     <xp:dominoView viewName="(keywordsUser)" var="view"> 
     </xp:dominoView> 
     </xe:this.data> 
    </xe:dynamicViewPanel> 
</xp:panel> 

Lorsque vous affichez la source HTML de la colonne cliquable montre ce qui suit:

<tr> 
    <td class="xspColumnViewStart"> 
     <a id="view:_id1:cc4cconeuilayout:OneUIMainAreaCallback:dynamicViewPanel1:0:_id6:_internalColumnLink" 
      href="*routetoourrecord*";action=editDocument" 
      class="xspLinkViewColumn">2014</a> 
    </td> 

Répondre

1

Dynamic View Panel a une propriété "cible" dans toutes les propriétés où vous pouvez sélectionner "_blank". Cela devrait ajouter l'attribut target="_blank" aux liens dans la première colonne. Mais, malheureusement, cela fonctionne dans Notes client seulement.

Donc, il n'y a pas de propriété que nous pouvons simplement définir. Heureusement, les liens rendus ont leur propre classe "xspLinkViewColumn" (voir votre exemple HTML source). Avec dojo.query nous pouvons obtenir tous les éléments avec cette classe et ajouter l'attribut cible sur le côté client.

il suffit d'ajouter le code suivant l'événement à votre XPage:

<xp:eventHandler 
    event="onClientLoad" 
    submit="false"> 
    <xp:this.script><![CDATA[ 
     dojo.query(".xspLinkViewColumn").attr("target", "_blank"); 
    ]]></xp:this.script> 
</xp:eventHandler> 

Tous les liens auront l'attribut target="_blank" de cette façon et les documents seront ouverts dans un nouvel onglet du navigateur. Juste pour faire savoir que le code ne fonctionne pas avec le thème Bootstrap

+0

Pardonne-moi que je suis encore assez nouveau pour XPages. Est-ce que les "liens de colonne de vue" vous avez mentionné une propriété du Dynamic View Panel? Si oui, je ne peux pas le voir! – AJF

+0

J'ai mis à jour ma réponse et espère que c'est mieux de comprendre. Vous devez simplement ajouter le code ci-dessus à votre contrôle Xpage ou personnalisé et cela fonctionnera. –

+0

Merci encore Knut. J'ai ajouté le code que vous avez fourni dans XPage mais il n'ouvre toujours pas l'enregistrement dans un nouvel onglet de navigateur \ fenêtre. J'ai essayé d'ajouter le code dans la balise XML pour le dynamicviewpanel, puis effectué une construction et propre mais aucune différence. Puis déplacé le code à l'extérieur du dynamicviewpanel vers le haut de la Xpage - à nouveau construire et nettoyer mais toujours la même chose. J'ai ensuite essayé de supprimer le code et dans les propriétés de XPage, dans l'événement "onClientLoad" j'ai ajouté ce qui suit, dojo.query (". XspLinkViewColumn"). Attr ("target", "_blank"); mais n'a toujours pas fonctionné. Qu'est-ce que je fais mal? – AJF

1

Au lieu de cela, vous pouvez utiliser

dojo.query('[id$="_internalColumnLink"]').attr("target", "_blank"); 
Questions connexes