Domino 9 und frühere Versionen > ND8: Entwicklung - XPages
Xpages - Text innerhalb eines Repeat Control in Einzelwerte zerlegen
atbits:
Hallo Ulrich,
also nochmals ein wenig konkreter, so läuft es in einer Testsite bei mir:
--- Code: ---<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:repeat id="repeatTagCloud" var="tagVar"
value="#{javascript: @Explode('lala,lulu,lolo');}">
<xp:panel style="font-size:7pt;color:rgb(128,128,128);margin-bottom:5.0px">
<xp:text escape="false" id="tagList">
<xp:this.value><![CDATA[#{javascript:
var dbname = @DbName()[1];
var ret = "<a href='/" + dbname + "/myTagView/" + tagVar + "'>" + tagVar + "</a> ";
return ret;}]]></xp:this.value>
</xp:text>
</xp:panel>
</xp:repeat>
</xp:view>
--- Ende Code ---
Statt dem value="#{javascript: @Explode('lala,lulu,lolo');}"
würdest Du natürlich z.B. ein JS-Function aufrufen, die Dir ein Array von relevanten Tags liefert also z.B.:
value="#{javascript: getAllMyTags();}"
Hoffe das hilft weiter.
Grüße David
eknori:
yep, so bekomme ich das hin. Danke
JulianBuss:
Wenn ich das richtig erinnere, ist @Explode übrigens nur eine Abkürzung für die .split() Methode eines Strings.
Demnach müsstet so eine Stück JavaScript auch gehen:
--- Code: ---var s = "eins,zwei,drei";
var l = s.split(",")
--- Ende Code ---
Ansonsten find ich auch nix schlechtes an verschachtelten Repeat-Controls, dann könntest Du im inneren Repeat-Control das Link Control nutzen statt HTML selbst zusammenzubauen.
eknori:
Danke für die Tipps. Ist im Grunde ganz einfach. Das Problem, das ich hatte: Ich wusste nicht, wie ich an die Daten aus dem "tags" Item im Dokument komme.
Bei David Leedy habe ich dann den ausschlaggebenden Tipp bekommen. http://xpagesblog.com/xpages-blog/2010/3/30/displaying-a-multi-value-field-with-a-repeat-control.html
der Code sieht jetzt bei mir so aus. Das repeat sitzt in einem weiteren repeat, welches RowData liefert.
Jetzt holt man sich mit
--- Zitat ---RowData.getDocument().getItemValue("tags");
--- Ende Zitat ---
die Werte aus dem Item "tags" und übergibt diese Werte an ein weiteres repeat Control
--- Zitat --- <xp:panel
style="font-size:7pt;color:rgb(128,128,128);margin-bottom:5.0px">
<xp:repeat id="repeatTags" rows="250" var="taglist">
<xp:this.value><![CDATA[#{javascript:RowData.getDocument().getItemValue("tags");}]]></xp:this.value>
<xp:link escape="true" id="tagLink">
<xp:this.text><![CDATA[#{javascript:taglist + " "}]]></xp:this.text>
<xp:eventHandler event="onclick"
submit="true" refreshMode="complete">
<xp:this.action>
<xp:openPage>
<xp:this.name><![CDATA[#{javascript:"/tags.xsp?tag=" + taglist}]]></xp:this.name>
</xp:openPage>
</xp:this.action>
</xp:eventHandler>
</xp:link>
</xp:repeat>
</xp:panel>
--- Ende Zitat ---
Das LinkControl erledigt den Rest. Im OnClick Event baut man sich die URL samt Parametern zusammen.
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln