Search the FirstSpirit Knowledge Base
Hallo Community,
kann man eine DB Enttity mit der funktion sort(lambda) auch absteigend sortieren?
Die entity hat ein Datum und möchte erst die neusten Datensätze anzeige.
Ist es mit FirtSpirit möglich, wenn ja, bitte ein Beispiel wie.
Danke
Viele Grüße,
Aissam
Hallo Aissam,
mir fiel gerade noch ein, dass das mit dem Minus nur geht wenn die Datums-Spalte ein Timestamp ist (typ date). Falls sie den Typ FirstSpirit-Editor (xml) hat, müsste es gehen per
.sort(x->x.datum).reverse()
Das sollte auch generell gehen und wäre wohl auch schöner zu lesen
Evtl. musst Du auch die Liste vorher einmal kopieren, weil das .sort "in situ" arbeitet, also keine neue Liste erzeugt sondern die vorhandene sortiert:
.copy().sort(x->x.datum).reverse()
Viele Grüße
Michael
Hallo Aissam,
wie greifst Du denn auf die Daten zu? Ist es ein ContentSelect (=Header-Funktion) oder eine Content-Projektion (=Tabellenvorlage als Absatz)?
Viele Grüße
Michael
Hallo Michael,
hier der Quellcode
<div class="infopool">
<table cellspacing="0" cellpadding="0" border="0">
<thead>
<tr class="header">
<th style="width: 1%;">Nr.</th>
<th style="width: 1%;">Datum</th>
<th>Titel</th>
<th style="width: 1%;"> </th>
</tr>
</thead>
<tbody>
$CMS_FOR(for_rundschreiben,st_infopool_typ.dataset.entity.rundschreibenList.sort(x -> x.datum))$
<tr class="element_$CMS_VALUE(#global.section.id)$ $CMS_IF(for_rundschreiben.aktiv)$gueltig$CMS_ELSE$ungueltig$CMS_END_IF$ $CMS_VALUE(for_rundschreiben.datum.format("yyyy"))$_$CMS_VALUE(#global.section.id)$" >
<td style="vertical-align:top;"><a href="$CMS_REF(for_rundschreiben.datei)$" title="$CMS_VALUE(for_rundschreiben.titel.convert2)$" target="_blank">$CMS_VALUE(for_rundschreiben.nr)$</a></td>
<td style="vertical-align:top;"><a href="$CMS_REF(for_rundschreiben.datei)$" title="$CMS_VALUE(for_rundschreiben.titel.convert2)$" target="_blank">$CMS_VALUE(for_rundschreiben.datum)$</a></td>
<td style="vertical-align:top;"><a href="$CMS_REF(for_rundschreiben.datei)$" title="$CMS_VALUE(for_rundschreiben.titel.convert2)$" target="_blank">$CMS_VALUE(for_rundschreiben.titel.convert2)$</a></td>
$CMS_IF(#global.is("WEBEDIT"))$
<td style="vertical-align:top;">
<a href="$CMS_REF(pageref:"rundschreiben_detailansicht", contentId:for_rundschreiben.id, template:extranet.rundschreiben)$">
<i>editieren</i>
</a>
</td>
$CMS_END_IF$
</tr>
$CMS_END_FOR$
</tbody>
</table>
<p style="margin: 0px; padding: 5px; line-height: 14px;">
Die kursiven, durchgestrichenen Rundschreiben sind nicht mehr gültig. Diese Rundschreiben dienen lediglich zu Ihrer Information über zurückliegende Aktionen.
</p>
</div>
Viele Grüße,
Aissam
Hallo Aissam,
ich verstehe das jetzt so, dass aktuell die Sortierung grundsätzlich funktioniert, nur eben aufsteigend, richtig?
In diesem Fall sollte es einfach reichen, die Sortierung umzudrehen:
.sort(x-> -x.datum)
Viele Grüße
Michael
Hallo Michael,
und wie drehe ich die Sortierung um?
.sort(x-> -x.datum) steht ja schon da
Viele Grüße,
Aissam
Hallo Aissam,
ist vielleicht zu einfach zu übersehen:
In meiner Variante ist noch ein Minuszeichen vor dem x.datum 😉
Viele Grüße
Michael
ah ok hab ich nicht gesehen, Aber leider funktioniert das nicht.
Wenn ich das - hinzufüge dann ist es eher unsortiert.
Viele Grüße,
Aissam
Hallo Aissam,
mir fiel gerade noch ein, dass das mit dem Minus nur geht wenn die Datums-Spalte ein Timestamp ist (typ date). Falls sie den Typ FirstSpirit-Editor (xml) hat, müsste es gehen per
.sort(x->x.datum).reverse()
Das sollte auch generell gehen und wäre wohl auch schöner zu lesen
Evtl. musst Du auch die Liste vorher einmal kopieren, weil das .sort "in situ" arbeitet, also keine neue Liste erzeugt sondern die vorhandene sortiert:
.copy().sort(x->x.datum).reverse()
Viele Grüße
Michael
Hallo Michael,
danke das hat funktioniert:
rundschreibenList.copy().sort(x->x.datum).reverse()
Viele Grüße,
Aissam