Übersicht und Zielsetzung
Out of the box, MOOS’ Webpart für Inhaltsabfragen (CQWP) zeigt die Ergebnisse in Form einer Liste, ähnlich zu den Suchergebnissen. Es ist auch möglich, die Ergebnisse in einem Raster-Format anzeigen (dh. HTML-Tabellenformat). Raster-Formate sind unter Umständen besser. Ich beschreibe wie man diesen Effekt in diesem Artikel zu erreichen.
Business-Szenario
Ich arbeite mit einem Client auf eine unternehmensweite MOSS-rollout. Wir haben ihre Taxonomie gestaltet, so dass Projekte Bürger der ersten Klasse in der Hierarchie sind und ihre eigene Top-Level-Website haben. Projektmanager erhalten eine Singleton-Liste von Projektzusammenfassungsinformationen, wie Titel, Budget, erwarteter Fertigstellungstermin, verbleibende Budget und anderen Übersicht Typ Felder. Von "singleton" Ich meine eine benutzerdefinierte SharePoint-Liste, die garantiert, dass nur ein Element enthalten. Vereinfachender, Es sieht wie folgt aus:
Der technische Ansatz ist ähnlich wie beschrieben Hier (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). Der CQWP wird eine XSL-Transformation ausgeben von HTML für den Browser zum Rendern verwendet..
Ich stelle mir vor immer das Ergebnis vor dem Tauchen in die XSL-Datei, da XSL ein Alptraum ist. Hier ist meine gewünschte Ergebnis:
HTML wie folgt generiert, die sich ergeben:
<HTML> <Körper> <Zentrum> <Tabelle Grenze= 1> <!-- Etiketten--> <TR bgcolor= blau> <TD><Schriftart Farbe= weiß><b>Projektname</b></Schriftart></TD> <TD ausrichten= rechts><Schriftart Farbe= weiß><b>Vollständiges Datum</b></Schriftart></TD> <TD ausrichten= rechts><Schriftart Farbe= weiß><b>Budget</b></Schriftart></TD> <TD ausrichten= rechts><Schriftart Farbe= weiß><b>Tatsächliche Kosten</b></Schriftart></TD> <TD><Schriftart Farbe= weiß><b>Gesamtstatus</b></Schriftart></TD> </TR> <TR> <TD>Computerraum neu verkabeln.</TD> <TD ausrichten= rechts>02/01/08</TD> <TD ausrichten= rechts>22,500.00</TD> <TD ausrichten= rechts>19,000.00</TD> <TD>In Bearbeitung</TD> </TR> <TR> <TD>Bereitstellung Server für SQL Upgrade</TD> <TD ausrichten= rechts>04/01/08</TD> <TD ausrichten= rechts>7,500.00</TD> <TD ausrichten= rechts>0.00</TD> <TD>Geplant</TD> </TR> </Tabelle> </Zentrum> </Körper> </HTML> |
Ansatz
Gehen Sie folgendermaßen vor um das Raster zu erstellen:
- Identifizieren Sie die Komponenten des Rasters (Zeilen/Spalten).
- Definieren und Erstellen der erforderlichen Websitespalten.
- Unterseiten für die Projekte und Singleton-Listen zu erstellen.
- Fügen Sie die CQWP zu einer Webseite hinzu und konfigurieren Sie es für Ihre Listen suchen.
- Ändern der CQWP XML um die zusätzlichen Spalten zu sammeln.
- Ändern Sie die XSL-Datei um eine Tabelle zu erzeugen.
Ich werde auf Nummer sechs konzentrieren. Zahlen eins bis vier sind geradlinig und etwas, das jeder Benutzer CQWP bereits getan hat. Nummer fünf wurde gut dokumentiert, andere einschließlich dieser erschöpfenden Screenshot beladenen Artikel aus MSDN Hier (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) und Heather Solomon's blog Hier (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).
Schrauben und Muttern
Beginnen Sie und implementieren Sie die Schritte eins bis fünf nach der MSDN-Dokumentation und Heather Solomon Artikel.
An diesem Punkt, Sie haben Ihre CQWP zur Seite hinzugefügt, und Sie haben Ihre <CommonViewFields> nach Bedarf konfiguriert.
Die üblichen Schritte, Ich bekomme diese Zwischenergebnisse:
1. Erstellen eines Inhaltstyps, templatized benutzerdefinierte Listen für dieses Inhaltstyps und zwei Standorte. Hier ist der Content-type:
Hier ist die Websitestruktur:
2. Fügen Sie die CQWP nach Listenerstellung mein Projekt Unterwebsites und Singleton Projekt Zusammenfassung:
3. Fügen Sie alle zusätzliche Informationen, die ich über will die <CommonViewFields>:
<Eigenschaft Name="CommonViewFields" Typ="Zeichenfolge">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</Eigenschaft>
Anmerkung, die ich hatte weiterhin die Eigenschaftenfelder auf einer Linie, oder es würde nicht funktionieren. (CQWP sagen mir, dass die Abfrage keine Elemente zurückgegeben).
4. An diesem Punkt, Wir sind bereit, über die MSDN-Artikel bewegen und Flip Sie Heather Solomon-Artikel. Ihre Schritte, beginnend in der Nähe von Schritt #5 um eine benutzerdefinierte erstellen / nicht duplizierte Version der ItemStyle.xsl. Ich befolgen Heathers Rat, bis hinauf Schritt 11 und erhalten diese Zwischenergebnisse:
4.1: Mein XSL-Vorlage wie folgt zu nennen:
<XSL:Vorlagenname = "Grid" Match = "Zeile[@Style = "Grid"]" Modus = "Itemstyle">
Ich passe auch leicht ihr vorgeschlagen <XSL:für jeden …> durch das Hinzufügen einer <BR /> Tag, um eine sauberere Liste bereitstellen:
<XSL:für jeden Wählen Sie="@*"> P:<XSL:Wert der Wählen Sie="Name()" /><BR/> </XSL:für jeden>
4.2: Ändern Sie das Webpart, zur Darstellung und wählen Sie meine "Gitter" Stil:
Die Änderung übernommen und hier ist das Ergebnis:
Aus dem Gesagten sehen wir, dass wir wollen, dass die Felder (Projektname, Kosten, Status, usw.) stehen für uns zu nutzen, wenn wir den HTML-Code ausgeben. Nicht nur das, aber wir sehen die Namen, mit denen wir diejenigen Spalten die XSL-Datei verweisen muss. Zum Beispiel, Wir verweisen auf Projekt-Status als "Project_x005F_x0020_Name".
An diesem Punkt, Wir fahren von Heather's Blog und von den Schultern der Riesen, Ich hinzufügen mein eigenes kleines bisschen.
ContentQueryMain.xsl
HINWEIS: Wenn sowohl ContentQueryMain.xsl als auch ItemStyle.xsl ändern, Checken Sie diese Dateien wieder, bevor die Auswirkungen Ihrer Änderungen angezeigt werden sollen.
Raster zu Zwecken, MOSS verwendet zwei verschiedene XSL-Dateien, um die Ergebnisse zu produzieren, sehen wir von einer CQWP. Das vorherige Bit Ausgabe generieren, Wir modifiziert ItemStyle.xsl. MOSS nutzt eigentlich ein weiteres XSL-Datei, ContentQueryMain.xsl, in Verbindung mit ItemStyle.xsl seine HTML generieren. Wie der Name schon sagt, ContentQueryMain.xsl ist der "main" XSL, das steuert den gesamten Fluss der Übersetzung. Durchläuft alle gefundenen Elemente und übergibt sie eins nach dem anderen zu Vorlagen in ItemStyle.xsl. Wir werden ItemStyle.xsl zum Generieren von geöffnetem ändern. <Tabelle> Tag vor dem Ausgeben von der ersten Zeile der Daten und dem schließenden <Tabelle> Tag nach der letzten Zeile ausgeben. Um dies zu erreichen, ContentQueryMain.xsl wird geändert, um unsere "Gitter zwei Parameter übergeben" Vorlage in ItemStyle.xsl, "letzte Zeile" und die "aktuelle Zeile". ItemStyle.xsl verwendet diese bedingt die erforderlichen Tags ausgeben.
Heather Solomon Technik, Wir suchen ContentQueryMain.xsl. Es befindet sich an der gleichen Stelle wie ItemStyle.xsl. Dieser Screenshot sollte helfen:
Wir müssen die folgenden Änderungen vornehmen:
- Eine Xsl-Vorlage ändern, "CallItemTemplate" aufruft, die tatsächlich unser Grid-Vorlage in ItemStyle.xsl. Wir geben zwei Parameter der Grid-Vorlage weiter, sodass es die Daten haben wird, die es bedingt zu generieren, öffnen und schließen muss <Tabelle> Schlagwörter.
- Ändern Sie ein weiteres Stück der ContentQueryMain.xsl, die CallItemTemplate"aufruft" ein "LastRow weiterzugeben" Parameter, so dass LastRow unsere Grid-Vorlage weiterbelastet werden kann.
Suchen Sie die Vorlage mit dem Namen "OuterTemplate.CallItemTemplate" durch die Zeichenfolge identifiziert:
<XSL:Vorlage Name="OuterTemplate.CallItemTemplate">
Das gesamte Template wie folgt zu ersetzen:
<XSL:Vorlage Name="OuterTemplate.CallItemTemplate"> <XSL:param Name="CurPosition" /> <!-- Hinzufügen der "LastRow" Parameter. Wir verwenden, nur wenn der Element-Stil-Pass in "Grid" ist. --> <XSL:param Name="LastRow" /> <XSL:Wählen Sie> <XSL:Wenn Test="@Style = 'NewsRollUpItem'"> <XSL:anwenden-Vorlagen Wählen Sie="." Modus="ItemStyle"> <XSL:mit param Name="EditMode" Wählen Sie="$cbq_iseditmode" /> </XSL:anwenden-Vorlagen> </XSL:Wenn> <XSL:Wenn Test="@Style = 'NewsBigItem'"> <XSL:anwenden-Vorlagen Wählen Sie="." Modus="ItemStyle"> <XSL:mit param Name="CurPos" Wählen Sie="$CurPosition" /> </XSL:anwenden-Vorlagen> </XSL:Wenn> <XSL:Wenn Test="@Style = 'NewsCategoryItem'"> <XSL:anwenden-Vorlagen Wählen Sie="." Modus="ItemStyle"> <XSL:mit param Name="CurPos" Wählen Sie="$CurPosition" /> </XSL:anwenden-Vorlagen> </XSL:Wenn> <!-- Übergeben Sie aktuelle Position und Lastrow an die Gitter itemstyle.xsl Vorlage. ItemStyle.xsl verwenden, die die offene ausgeben und schließen <Tabelle> Schlagwörter. --> <XSL:Wenn Test="@Style = "Grid""> <XSL:anwenden-Vorlagen Wählen Sie="." Modus="ItemStyle"> <XSL:mit param Name="CurPos" Wählen Sie="$CurPosition" /> <XSL:mit param Name="Letzter" Wählen Sie="$LastRow" /> </XSL:anwenden-Vorlagen> </XSL:Wenn> <XSL:sonst> <XSL:anwenden-Vorlagen Wählen Sie="." Modus="ItemStyle"> </XSL:anwenden-Vorlagen> </XSL:sonst> </XSL:Wählen Sie> </XSL:Vorlage> |
Die Kommentare werden der Zweck der Änderungen.
Natürlich, die "OuterTemplate.CallItemTemplate" nennt sich aus einer anderen Dokumentvorlage. Suchen Sie nach dieser Vorlage für diese Textzeichenfolge:
<XSL:Vorlage Name="OuterTemplate.Body">
Blättern Sie durch die Anweisungen im OuterTemplate.Body und fügen den LastRow-Parameter wie folgt ein (als Kommentar in kursiv dargestellt):
<XSL:Call-template Name="OuterTemplate.CallItemTemplate"> <XSL:mit param Name="CurPosition" Wählen Sie="$CurPosition" /> <!-- Den LastRow Parameter einfügen. --> <XSL:mit param Name="LastRow" Wählen Sie="$LastRow"/> </XSL:Call-template>
Nach all dem, Endlich haben wir die Dinge richtig einrichten, so dass unsere ItemStyle.xsl ausgeben kann <Tabelle> Markierungen an der richtigen Stelle.
ItemStyle.Xsl
HINWEIS: Wieder, ItemStyle.xsl nach Sie Änderungen vornehmen, so dass Sie die Auswirkungen dieser Änderungen sehen Einchecken.
Wir haben hier zwei Aufgaben:
- Ersetzen Sie die gesamte Grid-Vorlage. Sie können von unten kopieren.
- Fügen Sie einige Mumbo Jumbo außerhalb der Template-Definition, die "Formatcurrency ermöglicht" Vorlage arbeiten. (Sie können sagen, dass ich einen schwach Handle auf XSL).
Erste, im oberen Bereich der ItemStyle.xsl, Fügen Sie diese Zeile:
<!-- Einige Hokuspokus, die uns ermöglicht, U.S anzeigen. Währung. --> <XSL:Dezimal-format Name="Personal" Ziffer="D" /> <XSL:Vorlage Name="Standard" Spiel="*" Modus="ItemStyle">
Beachten Sie, dass ich fügte hinzu, es direkt vor der <XSL:Vorlagenname = "Standard" …> Definition.
Nächste, gehen Sie zurück zu unserer Grid-Vorlage. Ersetzen Sie die gesamte Grid-Vorlage durch folgenden code. Es ist gründlich kommentierte, aber zögern Sie nicht, mich per e-Mail oder Kommentare auf meinem Blog zu hinterlassen, wenn Sie Fragen haben.
<XSL:Vorlage Name="Raster" Spiel="Zeile[@Style = "Grid"]" Modus="ItemStyle"> <!-- ContentMain.xsl übergibt, CurPos und zuletzt. Wir verwenden diese bedingt die offene ausgeben und schließen <Tabelle> Schlagwörter. --> <XSL:param Name="CurPos" /> <XSL:param Name="Letzter" /> <!-- Die folgenden Variablen sind unverändert aus der Norm ItemStyle.xsl --> <XSL:Variable Name="SafeImageUrl"> <XSL:Call-template Name="OuterTemplate.GetSafeStaticUrl"> <XSL:mit param Name="UrlColumnName" Wählen Sie=""ImageUrl""/> </XSL:Call-template> </XSL:Variable> <XSL:Variable Name="SafeLinkUrl"> <XSL:Call-template Name="OuterTemplate.GetSafeLink"> <XSL:mit param Name="UrlColumnName" Wählen Sie=""LinkUrl""/> </XSL:Call-template> </XSL:Variable> <XSL:Variable Name="DisplayTitle"> <XSL:Call-template Name="OuterTemplate.GetTitle"> <XSL:mit param Name="Titel" Wählen Sie="@Title"/> <XSL:mit param Name="UrlColumnName" Wählen Sie=""LinkUrl""/> </XSL:Call-template> </XSL:Variable> <XSL:Variable Name="LinkTarget"> <XSL:If Test="@OpenInNewWindow = 'True'" >_blank</XSL:If> </XSL:Variable> <!-- Hier definieren wir eine variable, "TableStart". Diese enthält den HTML-Code, mit dem wir die Eröffnung der Tabelle sowie die Spaltenbeschriftungen definieren. Beachten Sie, dass bei CurPos = 1, Es enthält den HTML-Code in einem CDATA-tag. Ansonsten, Es wird leer sein. Der Wert des TableStart ist ausgegeben, jedes Mal ItemStyle über ContentQueryMain.xsl aufgerufen wird. --> <XSL:Variable Name="tableStart"> <XSL:If Test="$CurPos = 1"> <![CDATA[ <Tabellenrahmen = 1> <TR-Bgcolor = "blau"> <TD><Schriftfarbe = "White"><b>Projektname</b></Schriftart></TD> <TD align = "Right"><Schriftfarbe = "White"><b>Vollständiges Datum</b></Schriftart></TD> <TD align = "Right"><Schriftfarbe = "White"><b>Budget</b></Schriftart></TD> <TD align = "Right"><Schriftfarbe = "White"><b>Tatsächliche Kosten</b></Schriftart></TD> <TD><Schriftfarbe = "White"><b>Gesamtstatus</b></Schriftart></TD> </TR> ]]> </XSL:If> </XSL:Variable> <!-- Eine andere variable, Simple einfach definiert das schließende Tag Tabelle. Wie bei tableStart, Es ist immer ausgegeben. Deshalb dessen Wert zugeordnet ist bedingt basierend auf, ob wir die letzte Zeile von ContentQueryMain.xsl übergeben wurde, haben. --> <XSL:Variable Name="Simple"> <XSL:If Test="$CurPos = $Last"> <![CDATA[ </Tabelle> ]]> </XSL:If> </XSL:Variable> <!-- Strahlen Sie immer den Inhalt des tableStart. Ist dies nicht die erste Zeile von ContentQueryMain.xsl an uns übergeben, Wir wissen, dass ihr Wert leer sein wird. Deaktivieren der Ausgabeschutz weil wenn TableStart es nicht blank, Es enthält aktuelle HTML, das wollen wir durch den Browser gerendert werden. Wenn wir sagen, nicht Ausgabe der XSL-Parser deaktivieren entkommen, Es werden Sachen wie generieren"<Tabelle>" anstelle von"<Tabelle>". --> <XSL:Wert der Wählen Sie="$tableStart" Das Disable-Output-escaping="Ja"/> <TR> <!-- P:Project_x005F_x0020_Name P:Project_x005F_x0020_End_x005F_x0020_Date P:Project_x005F_x0020_Budget P:Project_x005F_x0020_Expenses P:Project_x005F_x0020_Status --> <TD> <XSL:Wert der Wählen Sie="@Project_x005F_x0020_Name"/> </TD> <TD ausrichten="rechts"> <XSL:Wert der Wählen Sie="@Project_x005F_x0020_End_x005F_x0020_Date"/> </TD> <TD ausrichten="rechts"> <XSL:Call-template Name="FormatCurrency"> <XSL:mit param Name="Wert" |
Dieses ist unglaublich nützlich gewesen.. Vielen Dank!
AAH… Es war, weil ich meine List-Style anders benannt und wusste nicht, dass es in der ContentQueryMain.xsl für die "Style" überprüft:
<XSL:Wenn test="@Style='NameOfMyStyle'">
Mit umbenannten funktionierte es. 🙂
Es funktionierte fast für mich: Ich es geschafft, die Ausgabe der </Tabelle> Endtag korrekt, aber das Start-Tag fehlt. Es scheint der Test = "$CurPos = 1" nicht zurück wahr. Aber warum?
Großen Beitrag. Paul ich alle oben genannten Dinge getan haben. Ich habe eine Abfrage, Wie kann ich erreichen die Summe der "gesamten tatsächlichen Expences" oder Summe der Wert zweier Spalten.
Sie haben keine Arbeit mit dem Erstellen von benutzerdefinierten ContentQueryMain und ItemStyle Xsl-Dateien gemacht? Der Grund, warum, den ich Frage, ist, dass ich nicht, dass meine benutzerdefinierten Formatvorlagen überschrieben mit Patches oder Upgrades sorgen will. Haben Sie Beispiele? Ich habe versucht, machen eine identische Kopie der ContentQueryMain.xsl und lädt die neue benutzerdefinierte Kopie für die Stilbibliothek. Wenn einen Verweis auf diese Xsl-Datei in die .webpart-MainXslLink-Eigenschaft setzen, Ich bekomme 401 nicht autorisierte. Die benutzerdefinierten Xsl-Datei ist eine veröffentlichte Version und jeder hat Lesezugriff darauf.
fantastische Post Danke! Haben für die letzten paar Tage mit diesem jetzt kämpfen wurden.
Hallo, Das war ein wirklich hilfreichen Beitrag. Ich habe es alles funktioniert, und auch implementierte Mike Brown Wandel so it-Gruppen
die Ergebnisse in der Tabelle von whatever wähle ich als Parameter Group By in der CQWB-Eigenschaften.
Ich habe dem Titel einen Link auch, so dass es gut funktioniert. Ich habe noch ein problem, Obwohl. Ich bin die Ergebnisse nach Standortnamen gruppieren.. Innerhalb der Tabelle, Es gruppiert sie schön, und es sieht gut aus, aber es ist noch ausdrucken der Gruppe
Namen(in meinem Fall die Websitenamen) über dem Tisch. Weiß jemand wie man diese loswerden?
Vielen Dank,
Greg
Schöner Artikel. Es gelang mir, meine Tabelle das Aussehen von standardmäßigen Sharepoint-Listen geben, durch die Analyse des Source-Codes der Liste. Hier sind die wichtigsten HTML-Blöcke in ItemStyle passen musste:
<Tabellenbreite = "100 %" Klasse = "ms-Listviewtable" Border = 0 Cellspacing = 0 Cellpadding = 1 Dir = "None">
<!–HEADER–>
<TR-Klasse = "ms-Viewheadertr" VALIGN = TOP>
<TH Nowrap Scope = "Col" Klasse = "ms-vh2"><Div Style = "Width:100%;Position:relative;Links:0;Nach oben:0;">
<Tabelle Style = "Width:100%;" CtxNum = "1" Height = "100 %" Cellspacing = 1 Cellpadding = 0 Class = "ms-Unselectedtitle">
<TR>
<TD Width = "100 %" Klasse = "ms-Vb" NoWrap>
Texte du Titre ici
</TD>
<TD Style = "Position:absolute;">
</TD>
</TR>
</TABELLE></div>
</TH>
<!–Wiederholen Sie für alle Header-Zellen–>
</TR>
<!– Tabellendaten –>
<TR-Klasse = "">
<!–Datenspalte, Verwenden Sie Pauls-Code für die erste mit dem hyperlink –>
<TD Class = "ms-vb2">Hier Daten</TD>
<!–Leere Spalte–>
<TD Class = "ms-vb2">
<Span-Dir = None></Spannweite><
/TD>
<!–Datumsspalte–>
<TD Class = "ms-vb2">
<NOBR>11/12/2008</NOBR>
</TD>
</TR>
<!–***Alternative Zeile – Verwenden Sie eine neue XSL-Variable, die Alternative Klasse basierend auf der aktuellen Zeile modulo 2 werden–>
<TR-Klasse = "ms-Wechsel">
…
</TR>
</TABELLE>
Thatz suchte ich gerade nach...Rock you Mann...Es lebe...Liebe dich für die Post..
<XSL:anwenden-Vorlagen auswählen = "." Modus = "Itemstyle">
<XSL:mit Param Name = "CurPos" Wählen Sie "$CurPosition =" />
<XSL:mit Param Name = "Letzte" Wählen Sie "$LastRow =" />
<XSL:mit Param Name = "StartNewGroup" Select="@__begingroup" />
</XSL:Wenn>
<XSL:beim Testen = "$StartNewGroup ="True"">
<TR>
<TD >
<XSL:Call-Template-name="OuterTemplate.GetGroupName">
<XSL:mit Param Name = "Gruppenname" Select="@*[Name()= $Group]"/>
<XSL:mit Param Name = "GroupType" Wählen Sie "$GroupType" = />
</XSL:Call-template>
</TD>
</TR>
</XSL:Wenn>
<XSL:sonst>
</XSL:sonst>
</XSL:Wählen Sie>
Hallo Paul,
Bei der Arbeit mit Xml/Xsl und Content-Abfrage-Webpart, Du hast guten Möglichkeiten, um Ihre Xslt-format gefunden? Versucht, Änderungen vornehmen und Testen des Entwurfs erweist sich als eine richtige Schmerzen in der einen ** nur mit einem Text-Editor…
Alles gute
(zB. https://myweb.com/Marketing/images/icn-order.gif, )
Ich sollte in den CommonViewFields-Feldtyp Bild verwenden? (zB. InternalColumnName, Bild)
Ihre Post ist genau das, was ich suchte. Jedoch, Ich kann nicht get it to work.
Ich habe die Dokumente in verschiedenen doc. Bibliotheken klassifiziert sondern mithilfe einer benutzerdefinierten Klasse-Spalte (Wahl: 1 oder 2. Ich möchte CQWP zu verwenden, diese Dokumente auf der Grundlage ihrer Klasse zeigen.
Ich konnte die CQWP addieren, in der SPD exportieren, Konfigurieren der itemStyle.xls, um benutzerdefinierte Felder in der Listenansicht anzeigen. jedoch, Ich konnte nicht erfolgreich umzusetzen, was Sie hier beschreiben.
Dies sind die Spalten, die ich in meinem CQWP anzeigen möchten:
Dateityp (Symbol zeigen)
Dateititel
Letzte Änderungsdatum
Geändert von Who
Ausgecheckt
Eingecheckt Kommentare
Im Moment habe ich das Ergebnis in Form einer Liste. Wie kann ich es in ein Talble Format ändern.
Vielen Dank.
Saji
Sorry für die Missspelling auf meinen Namen nicht sicher, wo die ” kamen aus.