Domino 9 und frühere Versionen > ND8: Entwicklung - XPages

Xpages - Text innerhalb eines Repeat Control in Einzelwerte zerlegen

<< < (2/2)

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>&nbsp;";

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