Content Query Web Teil Ergebnisse in einem Raster anzeigen / Tabelle

Ü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:

Bild

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:

Bild

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:

  1. Identifizieren Sie die Komponenten des Rasters (Zeilen/Spalten).
  2. Definieren und Erstellen der erforderlichen Websitespalten.
  3. Unterseiten für die Projekte und Singleton-Listen zu erstellen.
  4. Fügen Sie die CQWP zu einer Webseite hinzu und konfigurieren Sie es für Ihre Listen suchen.
  5. Ändern der CQWP XML um die zusätzlichen Spalten zu sammeln.
  6. Ä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:

Bild

Hier ist die Websitestruktur:

Bild

2. Fügen Sie die CQWP nach Listenerstellung mein Projekt Unterwebsites und Singleton Projekt Zusammenfassung:

Bild

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:

Bild

Die Änderung übernommen und hier ist das Ergebnis:

Bild

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:

Bild

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"&lt;Tabelle&gt;" 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" 
Wählen Sie="@Project_x005F_x0020_Budget"></XSL:mit param> </XSL:Call-template> </TD> <TD ausrichten="rechts"> <XSL:Call-template Name="FormatCurrency"> <XSL:mit param Name="Wert" Wählen Sie="@Project_x005F_x0020_Expenses">
</XSL:mit param> </XSL:Call-template> </TD> <TD> <XSL:Wert der Wählen Sie="@Project_x005F_x0020_Status"/> </TD> <!-- Alle folgenden auskommentiert, Dinge zu klären. Jedoch, bringen Sie es zurück und stopfen ihn in eine <TD> um seine Wirkung zu sehen. --> <!-- <Div Id = "Linkitem" Klasse = "Element"> <XSL:Wenn testen = "String-Length($SafeImageUrl) != 0"> <Div Class = "Bild-Raum-Links"> <a Href = "{$SafeLinkUrl}" Ziel = "{$LinkTarget}"> <IMG-Klasse = "Bild-fixed-Width" Src = "{$SafeImageUrl}"
Alt = "{@ImageUrlAltText}"/> </eine> </div> </XSL:If> <Div Class = "Link-Element"> <XSL:Call-template
Name="OuterTemplate.CallPresenceStatusIconTemplate"/> <a Href = "{$SafeLinkUrl}"
Ziel = "{$LinkTarget}" Titel = "{@LinkToolTip}"> <XSL:Wert-wählen Sie "$DisXSLyTitle" = /> </eine> <Div Class = "Beschreibung"> <XSL:Wert von select="@Description" /> </div> </div> </div>
--> </TR> <!-- Emit dem schließenden Tag Tabelle. Wenn wir nicht auf die letzte Zeile, Dies wird leer sein.. --> <XSL:Wert der Wählen Sie="$Simple" Das Disable-Output-escaping="Ja"/> </XSL:Vorlage> <XSL:Vorlage Name="FormatCurrency"> <XSL:param Name="Wert" Wählen Sie="0" /> <XSL:Wert der Wählen Sie='Format-Nummer($Wert, "$DDD,DDD,DDD.EDC, "Personal")' /> </XSL:Vorlage>

22 Gedanken zu „Content Query Web Teil Ergebnisse in einem Raster anzeigen / Tabelle

  1. Andreas

    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. 🙂

    Antwort
  2. Andreas

    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?

    Antwort
  3. Anand Singh Rawat

    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.

    Antwort
  4. Lisa

    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.

    Antwort
  5. Greg Sheridan

    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

    Antwort
  6. Kein name

    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>

    Antwort
  7. Mike Brown
    Zoltan,
    Ich war auf das gleiche Problem wie Sie arbeiten.. Ich wollte alle meine in einer gruppierten Weise, anstatt nur eine Lits angezeigten Elemente. Hier ist, wie ich es erreicht.
    ContentQueryMain.xsl
    <XSL:Wenn test="@Style='Grid'">
    <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 =" />
    <!–Fügen Sie diesen neue Abschnitt der Parameter, der angibt, einer neuen Gruppe übergeben hat begonnen–>
    <XSL:mit Param Name = "StartNewGroup" Select="@__begingroup" />
    </XSL:anwenden-Vorlagen>
    </XSL:Wenn>
    ItemStyle.xsl
    Fügen Sie Ihre parameter
    <XSL:Param Name = "StartNewGroup" />
    Dieser Text als die erste Datenzeile hinzufügen
    <XSL:Wählen Sie>
    <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>
    Dies sollte Ihr Problem Gruppierung in Ihr Raster kümmern. Jede Gruppe beginnt nun mit einer neuen Zeile angibt, den Gruppennamen. In meiner Lösung habe ich tatsächlich eine leere <TD /> in den Daten es sowie so Einzug stand die Gruppierung heraus viel besser.
    Standort1
    datacolumn1 datacolumn2 datacolumn3 etc.

    datacolumn1 datacolumn2 datacolumn3 etc.
    Standort2
    datacolumn1 datacolumn2 datacolumn3 etc.
    Site3

    datacolumn1 datacolumn2 datacolumn3 etc.

    datacolumn1 datacolumn2 datacolumn3 etc.
    usw..
    Antwort
  8. Zoltan
    Hallo Paul,
    Vielen Dank für die post, Es gelang mir, meine Abfrageergebnisse in einem Raster zu organisieren, Was sehr hilfreich ist. Jedoch, Ich sollte noch weiter gehen und meine Ergebnisse auf der Grundlage von Websites. Im moment, die Standortnamen werden zuerst aufgeführt., und dann ist die einzige große Raster sammeln alle Zeilen aus verschiedenen Standorten. Etwa wie folgt:
    Standort1 Name
    Site2 Name
    Daten im Raster für alle Standorte
    Alle Ideen, was ich ändern sollte, um meine Daten wie folgt zu erhalten:
    Standort1 Name
    Daten im Raster für Standort1
    Site2 Name
    Daten im Raster für Site2
    Vielen Dank im voraus,
    Zoltan
    Antwort
  9. Pierre Joubert
    Fantastische Post, löste mein Problem hatte ich.
    Meine einzige Frage ist das ZugewiesenAn-Feld anzeigen, Mit dem "Benutzer konfigurieren" Feldtyp und die importierte Webpart zeigt dann die folgende Fehlermeldung:
    "Es war ein Fehler beim Abrufen der Daten in diesem Webpart anzeigen."
    Ich habe alle möglichen Feldtypen ausprobiert., mit allem anderen, dass "Benutzer" Es werden keine Fehler angezeigt., aber es zeigt alles, was nicht im Bereich. Also ich nehme ist der Benutzer-Feldtyp korrekt, also muss ich eine Einstellung fehlt irgendwo.
    Irgendwelche Ideen zu diesem?
    Grüße
    Pierre
    Antwort
  10. Charftong
    Großen Beitrag!!! Sehr, sehr hilfreich.
    Kurze Frage, Du hast keine Arbeit zum Anzeigen von der Feldern ZugewiesenAn oder ModifiedBy mit Anwesenheit gemacht? Aus irgendeinem Grund, immer wenn ich versuche Dipslay Feld zugewiesen an in der CQWP, Es zeigt immer mit als Beispiel "203;#Charf-Tong". Ich finde einen Weg, um dieses.
    Antwort
  11. Jennifer Davis
    Paul
    Großer Artikel, Vielen Dank. Ich mache etwas sehr ähnlich, aber einen Link auf der Projektsite anstatt das Element in der Liste angezeigt werden soll. Zum Beispiel, Wir haben 25 Top Level Projekt-Websites und jeder enthalten eine Liste mit Inhaltstypen. Dies sind die Namen des Projekts, Division, Beschreibung. Ich möchte das Inhaltsabfrage-Webpart zu ziehen diese Daten und gelungen, mit der Ausnahme, dass standardmäßig die URL mich auf den Eintrag in der Liste nimmt und ich brauche es mich zu der Projektwebsite bringen verwenden. Sie können mir einen Rat geben?
    Vielen Dank
    Jen
    Antwort
  12. Paul Galvin
    Kieren,
    Ich benutze immer visual Studio die XSL-Datei bearbeiten. Es bietet Farbcodierung und es hat auch einige gute Intellisense-Unterstützung.
    –Paul
    Antwort
  13. Kieran schrieb:

    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

    Antwort
  14. Michael Dipay
    Die Frage war ich letztes Mal habend, wo es die Bilder von der Grid-Ansicht nicht angezeigt werden kann, aber stattdessen der Text angezeigt (https://myweb.com/Marketing/images/icn-order.gif,). Ich es geschafft, ihn mit Hilfe der SharePoint Designer beheben, indem erstellen benutzerdefinierte Ansicht und wählen Sie die benutzerdefinierten Spalten, die ich anzeigen möchten. Ich fand heraus, dass der Spaltentyp Bilder werden als URL angezeigt(Komma) (zB. https://myweb.com/Marketing/images/icn-order.gif,). Das aktuelle Format ist Text, So habe ich es aus dem gemeinsamen Xsl zu Bild ändern:Wert der Aufgaben-> Format als Bild. Diese Änderung an, dass die benutzerdefinierte Bilder, die ich wollte zeigen. Ich kopiere den Code, um das Bild anzuzeigen ( <Img Border ="0" Src = "{Substring-vor(@IcnOrder, ‘, ‘)}" /> ) Und in der ItemStyle.xsl-Datei habe ich die-@PICTURECOLUMNNAME an den Code zu ändern <Img Border ="0" Src = "{Substring-vor(@IcnOrder, ‘, ‘)}" /> . Dann speichern. Geben Sie nun meine Tabelle Rasterergebnisse zeigen den Text sowie das benutzerdefinierte Abbild Spalten.
    Antwort
  15. Helen
    Hallo Paul,
    Vielen Dank für den großen Artikel!
    Sie erwähnten, bedingte Formatierung – "Sie können auch bei der bedingten Formatierung setzen, wie die Darstellung von Projekten, die ihr Budget in rot überschritten haben." Kennen Sie ein Codebeispiel dafür haben?
    Nochmals vielen Dank!
    Helen
    Antwort
  16. Michael Dipay
    Hallo Paul,
    Es war ein großer Artikel und war in der Lage, die gleichen Ergebnisse zu generieren, wie erwartet. Ich habe eine Verpflichtung, ein Bild als eine der Spalten im Datenblatt anzuzeigen. Es ist keine Anzeige des Bildes in der Startaufstellung, sondern zeigt stattdessen die Url zum Bild mit einer (,) Komma am Ende.
    (zB. https://myweb.com/Marketing/images/icn-order.gif, )
    Ich sollte in den CommonViewFields-Feldtyp Bild verwenden? (zB. InternalColumnName, Bild)
    Vielen Dank,
    Mike
    Antwort
  17. Saji Ijiyemi

    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

    Antwort

Hinterlasse eine Antwort

Deine Email-Adresse wird nicht veröffentlicht. erforderliche Felder sind markiert *