Wyświetlanie zawartości kwerendy sieci Web Part wyniki w siatce / Tabela

Przegląd i cel

Po wyjęciu z pudełka, MOSS’ Web Part Kwerenda zawartości (CQWP) jego wyniki są wyświetlane w formie listy, podobne do wyników wyszukiwania. Jest również możliwe, aby wyświetlić wyniki w formacie siatki (tj.. Format tabeli HTML). Siatki formaty są lepsze w pewnych okolicznościach. Opisano, jak osiągnąć taki efekt w tym artykule.

Scenariusza biznesowego

Ja pracowałem z klientem na wypuszczenie MOSS enterprise-wide. Zaprojektowaliśmy ich taksonomia, takie, że projekty są pierwszej klasy obywateli w hierarchii i mają własne witryny najwyższego poziomu. Menedżerowie projektów prowadzi listę pojedynczych informacje podsumowujące projekt, przykład tytułem, budżet, przewidywane zakończenie dnia, pozostałe budżetu i innych pól typu podsumowania. Przez "pojedyncza" Chodzi mi o niestandardowej listy programu SharePoint gwarantowana zawierają tylko jeden element. Upraszczając, wygląda to:

obraz

Podejścia technicznego jest tak samo jak opisane tutaj (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). CQWP używa transformatę XSL do emitują HTML do przeglądarki do renderowania.

Zawsze wyobrazić wynik przed nurkowania w XSL, ponieważ XSL jest koszmar. Oto mój rezultat:

obraz

HTML jak to generuje wynik:

<HTML>
 <organ>
 <centrum>
 <Tabela granica= 1>

<!-- Etykiety-->
 <TR kolor tła= niebieski>
 <TD><czcionki Kolor= biały><b>Nazwa projektu</b></czcionki></TD>
 <TD wyrównać= prawo><czcionki Kolor= biały><b>Pełna Data</b></czcionki></TD>
 <TD wyrównać= prawo><czcionki Kolor= biały><b>Budżet</b></czcionki></TD>
 <TD wyrównać= prawo><czcionki Kolor= biały><b>Rzeczywisty koszt</b></czcionki></TD>
 <TD><czcionki Kolor= biały><b>Ogólny stan</b></czcionki></TD>
 </TR>

<TR>
 <TD>Ponownie drutu sali komputerowej.</TD>
 <TD wyrównać= prawo>02/01/08</TD>
 <TD wyrównać= prawo>22,500.00</TD>
 <TD wyrównać= prawo>19,000.00</TD>
 <TD>W toku</TD>
 </TR>

<TR>
 <TD>Przepis serwerów SQL Upgrade</TD>
 <TD wyrównać= prawo>04/01/08</TD>
 <TD wyrównać= prawo>7,500.00</TD>
 <TD wyrównać= prawo>0.00</TD>
 <TD>Planowane</TD>
 </TR>

</Tabela>
 </centrum>
 </organ>
</HTML>

Podejście

Wykonaj następujące kroki, aby utworzyć siatkę:

  1. Identyfikacja składników sieci (wierszy/kolumn).
  2. Definiowanie i tworzenie kolumn niezbędne witryny.
  3. Tworzenie podstrony dla projektów i pojedynczych list.
  4. Dodawanie CQWP do strony sieci web i skonfigurować go do wyszukiwania list.
  5. Zmodyfikować XML CQWP zebrać dodatkowe kolumny.
  6. Modyfikowanie XSL do tworzenia tabela.

Mam zamiar koncentrować się na numer sześć. Numery jeden przez cztery są prosto do przodu i coś, co każdy użytkownik CQWP już zrobione. Numer pięć zostało dobrze udokumentowane przez innych tym ten wyczerpujący artykuł ładunkiem zrzut ekranu z MSDN tutaj (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) i Heather Solomon's blog tutaj (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).

Nakrętki i śruby

Rozpocząć i wykonania czynności z jednego do pięciu jak w dokumentacji MSDN i Heather Solomona art.

W tym momencie, Twój CQWP dodane do strony i masz swoje <CommonViewFields> skonfigurowane jako niezbędne.

Po zwykłe czynności, Mogę dostać tych wyników pośrednich:

1. Utworzyć typ zawartości, przechowywaną listy niestandardowej zawartości typu i dwóch stron. Tutaj jest typ zawartości:

obraz

Oto struktura witryny:

obraz

2. Dodać CQWP po utworzeniu mój podwitryn projektu i pojedynczych list podsumowanie projektu:

obraz

3. Dodaj wszystkie dodatkowe informacje chcesz, za pośrednictwem <CommonViewFields>:

        <Właściwość Nazwa="CommonViewFields" Typ="ciąg">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</Właściwość>

Uwaga, że aby zachować wszystkie pola właściwość na jednej linii, albo nie będzie działać (CQWP powie mi, że kwerenda zwróciła żadnych elementów).

4. W tym momencie, Jesteśmy gotowi przejść poza w artykule MSDN i klapki na ponad do artykułu Heather Solomona. Jej kroki w pobliżu krok #5 Aby utworzyć niestandardowe / Unghosted wersja ItemStyle.xsl. Heather rad, się przez kroku 11 i dostać tych wyników pośrednich:

4.1: Następująca nazwa mój szablon XSL:

<XSL:Nazwa szablonu = "siatki" mecz = "wiersz[@Style = "Siatka"]" tryb = "itemstyle">

Również nieco zmodyfikować jej zaproponował <XSL:dla każdego …> dodając <BR /> Tag, aby dostarczyć listę czystsze:

    <XSL:dla każdego Wybierz="@*">
      P:<XSL:wartość z Wybierz="Nazwa()" /><BR/>
    </XSL:dla każdego>

4.2: Zmodyfikować składnik web part, Przejdź do wygląd i wybierz moje siatki"" styl:

obraz

Zastosować zmiany i oto wynik:

obraz

Widać z powyższego, że pola chcemy (Nazwa projektu, koszt, stan, itp) są dostępne dla nas do wykorzystania podczas emitujemy HTML. Nie tylko, że, ale możemy zobaczyć nazwy, przez które możemy odwołać tych kolumn w XSL. Na przykład, możemy odwołać stan projektu jako "Project_x005F_x0020_Name".

W tym momencie, Odjazd z Heather blog i ramionach tych gigantów, Dodać własną trochę.

ContentQueryMain.xsl

UWAGA: Podczas dokonywania zmian zarówno ContentQueryMain.xsl, jak również ItemStyle.xsl, trzeba sprawdzić, że te pliki z powrotem przed można zobaczyć efekt wprowadzonych zmian.

Dla celów tworzenia siatki, MOSS używa dwóch różnych plików XSL do wyników, które widzimy z CQWP. Do wygenerowania poprzedniego trochę wyjście, zmodyfikowaliśmy ItemStyle.xsl. MOSS faktycznie korzysta z innego pliku XSL, ContentQueryMain.xsl się w połączeniu z ItemStyle.xsl do generowania jej HTML. Jak sama nazwa wskazuje, ContentQueryMain.xsl jest głównym"" XSL, który kontroluje ogólny przepływ tłumaczenie. Iterację wszystkich znalezionych przedmiotów i przekazuje je jeden po drugim do szablonów w ItemStyle.xsl. Modyfikujemy będziesz ItemStyle.xsl do generowania otwarte <Tabela> znacznik przed wyemitowaniem pierwszy wiersz danych i zamknięcia <Tabela> znacznik po emitujących ostatni wiersz. Aby to osiągnąć, ContentQueryMain.xsl jest zmodyfikowany przejść dwa parametry do naszej sieci"" szablon w ItemStyle.xsl, "Ostatni wiersz" i "bieżący wiersz". ItemStyle.xsl używa tych warunkowo emitować niezbędne znaczniki.

Przy użyciu techniki Heather Solomona, Znajdź ContentQueryMain.xsl. Znajduje się on w tym samym miejscu jako ItemStyle.xsl. Ten zrzut ekranu powinna pomóc:

obraz

Musimy wprowadzić następujące zmiany:

  • Modyfikowanie szablonu xsl, "CallItemTemplate" że rzeczywiście wywołuje nasz szablon siatki w ItemStyle.xsl. Przekażemy dwa parametry do szablonu siatki, tak, że będzie on danych potrzebnych do wygenerowania warunkowo otwieranie i zamykanie <Tabela> znaczniki.
  • Zmodyfikować nieco innego ContentQueryMain.xsl, który wywołuje "CallItemTemplate" Aby przekazać ją "LastRow" parametr tak że LastRow mogą być przekazane do naszego szablonu siatki.

Zlokalizuj szablon o nazwie "OuterTemplate.CallItemTemplate" zidentyfikowane przez ciąg:

  <XSL:szablon Nazwa="OuterTemplate.CallItemTemplate">

Zastąpić cały szablon następujący:

  <XSL:szablon Nazwa="OuterTemplate.CallItemTemplate">
    <XSL:parametr Nazwa="CurPosition" />

    <!--
      Dodać "LastRow" parametr.
      Tylko używamy go, gdy element stylu przejść w "Siatki".
    -->
    <XSL:parametr Nazwa="LastRow" />

    <XSL:Wybierz>
      <XSL:Kiedy badania="@Style = "NewsRollUpItem"">
        <XSL:zastosowanie szablonów Wybierz="." tryb="itemstyle">
          <XSL:z param Nazwa="EditMode" Wybierz="$cbq_iseditmode" />
        </XSL:zastosowanie szablonów>
      </XSL:Kiedy>
      <XSL:Kiedy badania="@Style = "NewsBigItem"">
        <XSL:zastosowanie szablonów Wybierz="." tryb="itemstyle">
          <XSL:z param Nazwa="CurPos" Wybierz="$CurPosition" />
        </XSL:zastosowanie szablonów>
      </XSL:Kiedy>
      <XSL:Kiedy badania="@Style = "NewsCategoryItem"">
        <XSL:zastosowanie szablonów Wybierz="." tryb="itemstyle">
          <XSL:z param Nazwa="CurPos" Wybierz="$CurPosition" />
        </XSL:zastosowanie szablonów>
      </XSL:Kiedy>

      <!--
              Przekazać aktualną pozycję i lastrow siatki itemstyle.xsl szablon.
              ItemStyle.xsl będzie używać, aby emitować Otwórz i zamknij <Tabela> znaczniki.
      -->
      <XSL:Kiedy badania="@Style = "Siatka"">
        <XSL:zastosowanie szablonów Wybierz="." tryb="itemstyle">
          <XSL:z param Nazwa="CurPos" Wybierz="$CurPosition" />
          <XSL:z param Nazwa="Ostatnia" Wybierz="$LastRow" />
        </XSL:zastosowanie szablonów>
      </XSL:Kiedy>

      <XSL:w przeciwnym razie>
        <XSL:zastosowanie szablonów Wybierz="." tryb="itemstyle">
        </XSL:zastosowanie szablonów>
      </XSL:w przeciwnym razie>
    </XSL:Wybierz>
  </XSL:szablon>

Komentarze opisać w celu zmiany.

Oczywiście, "OuterTemplate.CallItemTemplate" nazywa się z innego szablonu. Zlokalizować ten szablon szukając ten ciąg tekstowy:

<XSL:szablon Nazwa="OuterTemplate.Body">

Przejrzyj instrukcje w OuterTemplate.Body i wstawić następujący parametr LastRow (się jako komentarz kursywą):

<XSL:Wywołanie szablon Nazwa="OuterTemplate.CallItemTemplate">
  <XSL:z param Nazwa="CurPosition" Wybierz="$CurPosition" />
  <!-- Wstaw parametr LastRow. -->
  <XSL:z param Nazwa="LastRow" Wybierz="$LastRow"/>
</XSL:Wywołanie szablon>

Po tym wszystkim, Wreszcie mamy ustawione prawidłowo, tak aby nasi ItemStyle.xsl może emitować rzeczy <Tabela> Tagi na właściwym miejscu.

ItemStyle.Xsl

UWAGA: Ponownie, Sprawdź w ItemStyle.xsl po dokonaniu zmian, tak że można zobaczyć efekt tych zmian.

Mamy tutaj dwa zadania:

  • Zastąpić cały szablon siatki. Można można skopiować i wkleić poniżej.
  • Dodać niektóre mumbo jumbo poza definicją szablonu, który umożliwia "formatcurrency" szablon do pracy. (Można powiedzieć, że mam wątpliwy uchwyt na XSL).

Pierwszy, w górnej części ItemStyle.xsl, Dodaj tę linię:

  <!-- Niektóre mumbo jumbo, że pozwala na wyświetlanie Stanów Zjednoczonych. waluty. -->
  <XSL:zapisie dziesiętnym Nazwa="personel" cyfra="D" />

  <XSL:szablon Nazwa="Domyślnie" mecz="*" tryb="itemstyle">

Uwaga, że dodałem go bezpośrednio przed <XSL:Nazwa szablonu = "domyślny" …> Definicja.

Następny, Wróć do naszego szablonu siatki. Zastąpić cały szablon siatki poniższy kod. To jest dokładnie skomentował, ale nie wahaj się napisz do mnie lub zostawić komentarz na moim blogu, jeśli masz pytania.

  <XSL:szablon Nazwa="Siatka" mecz="Wiersz[@Style = "Siatka"]" tryb="itemstyle">

    <!--
      ContentMain.xsl przechodzi CurPos i ostatnio.
      Możemy z nich korzystać do warunkowo emitują Otwórz i zamknij <Tabela> znaczniki.
    -->
    <XSL:parametr Nazwa="CurPos" />
    <XSL:parametr Nazwa="Ostatnia" />

    <!-- Następujące zmienne są niezmodyfikowany od standardowego ItemStyle.xsl -->
    <XSL:Zmienna Nazwa="SafeImageUrl">
      <XSL:Wywołanie szablon Nazwa="OuterTemplate.GetSafeStaticUrl">
        <XSL:z param Nazwa="UrlColumnName" Wybierz="'ImageUrl'"/>
      </XSL:Wywołanie szablon>
    </XSL:Zmienna>
    <XSL:Zmienna Nazwa="SafeLinkUrl">
      <XSL:Wywołanie szablon Nazwa="OuterTemplate.GetSafeLink">
        <XSL:z param Nazwa="UrlColumnName" Wybierz=""LinkUrl""/>
      </XSL:Wywołanie szablon>
    </XSL:Zmienna>
    <XSL:Zmienna Nazwa="DisplayTitle">
      <XSL:Wywołanie szablon Nazwa="OuterTemplate.GetTitle">
        <XSL:z param Nazwa="Tytuł" Wybierz="@Title"/>
        <XSL:z param Nazwa="UrlColumnName" Wybierz=""LinkUrl""/>
      </XSL:Wywołanie szablon>
    </XSL:Zmienna>
    <XSL:Zmienna Nazwa="LinkTarget">
      <XSL:Jeśli badania="@OpenInNewWindow = "True"" >_blank</XSL:Jeśli>
    </XSL:Zmienna>

    <!--
      Tutaj możemy zdefiniować zmienną, "tableStart".  Zawiera kod HTML, którego używamy do określenia otwarcia tabeli, a także etykiety kolumn.  Należy zauważyć, że jeśli CurPos = 1, zawiera kod HTML w znacznik CDATA.
      W przeciwnym razie, to będzie pusty.

      Wartość tableStart jest emited każdym razem, gdy ItemStyle jest wywoływana przez ContentQueryMain.xsl.
    -->
    <XSL:Zmienna Nazwa="tableStart">
      <XSL:Jeśli badania="$CurPos = 1">
        <![CDATA[
        <obramowanie tabeli = 1>
          <TR bgcolor = "blue">
            <TD><kolor czcionki = "biały"><b>Nazwa projektu</b></czcionki></TD>
            <TD align = "right"><kolor czcionki = "biały"><b>Pełna Data</b></czcionki></TD>
            <TD align = "right"><kolor czcionki = "biały"><b>Budżet</b></czcionki></TD>
            <TD align = "right"><kolor czcionki = "biały"><b>Rzeczywisty koszt</b></czcionki></TD>
            <TD><kolor czcionki = "biały"><b>Ogólny stan</b></czcionki></TD>
          </TR>
        ]]>
      </XSL:Jeśli>
    </XSL:Zmienna>

    <!--
      Innej zmiennej, tableEnd po prostu Określa zamknięcie tabela tagu.

      Podobnie jak w przypadku tableStart, to jest zawsze emited.  Dlatego, jego wartość jest przypisany warunkowo na podstawie czy już zostały mijamy ostatni wiersz ContentQueryMain.xsl.
    -->
    <XSL:Zmienna Nazwa="tableEnd">
      <XSL:Jeśli badania="$CurPos = $Last">
        <![CDATA[ </Tabela> ]]>
      </XSL:Jeśli>
    </XSL:Zmienna>

    <!--
      Zawsze emitują zawartość tableStart.  Jeśli to nie jest pierwszy wiersz przekazane nam przez ContentQueryMain.xsl, wtedy wiemy, że jego wartość będzie pusty.

      Wyłącz wyjście ucieczki, bo kiedy tableStart to nie puste, obejmuje ona rzeczywisty kod HTML, który chcemy być renderowane przez przeglądarkę.  Jeśli nie powiemy parser XSL do wyłączenia wyjścia ucieczki, będzie ona wytwarzać rzeczy, jak"&lt;Tabela&gt;" zamiast o"<Tabela>".
    -->
    <XSL:wartość z Wybierz="$tableStart" Wyłącz output escaping="tak"/>


    <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:wartość z Wybierz="@Project_x005F_x0020_Name"/>
      </TD>

      <TD wyrównać="prawo">
        <XSL:wartość z Wybierz="@Project_x005F_x0020_End_x005F_x0020_Date"/>
      </TD>

      <TD wyrównać="prawo">
        <XSL:Wywołanie szablon Nazwa="FormatCurrency">
          <XSL:z param Nazwa="wartość" 
Wybierz="@Project_x005F_x0020_Budget"></XSL:z param> </XSL:Wywołanie szablon> </TD> <TD wyrównać="prawo"> <XSL:Wywołanie szablon Nazwa="FormatCurrency"> <XSL:z param Nazwa="wartość" Wybierz="@Project_x005F_x0020_Expenses">
</XSL:z param> </XSL:Wywołanie szablon> </TD> <TD> <XSL:wartość z Wybierz="@Project_x005F_x0020_Status"/> </TD> <!-- Wszystkie z poniższych jest zakomentowana wyjaśnienie rzeczy. Jednakże, ją z powrotem i rzeczy go do <TD> Aby zobaczyć jego efekt. --> <!-- <DIV id = "linkitem" Class = "pozycja"> <XSL:Jeśli test = "długość ciąg($SafeImageUrl) != 0"> <DIV class = "obrazu obszar-po lewej"> <href = "{$SafeLinkUrl}" docelowy = "{$LinkTarget}"> <Klasa img = "obraz fixed-width" src = "{$SafeImageUrl}"
Alt = "{@ImageUrlAltText}"/> </a> </DIV> </XSL:Jeśli> <DIV class = "link pozycja"> <XSL:Wywołanie szablon
Name="OuterTemplate.CallPresenceStatusIconTemplate"/> <href = "{$SafeLinkUrl}"
docelowy = "{$LinkTarget}" tytuł = "{@LinkToolTip}"> <XSL:wartość z wybierz = "$DisXSLyTitle" /> </a> <DIV class = "opis"> <XSL:wartość z select="@Description" /> </DIV> </DIV> </DIV>
--> </TR> <!-- Emitują zamknięcia tabeli tagu. Jeśli nie jesteśmy na ostatni wiersz, to będzie pusty. --> <XSL:wartość z Wybierz="$tableEnd" Wyłącz output escaping="tak"/> </XSL:szablon> <XSL:szablon Nazwa="FormatCurrency"> <XSL:parametr Nazwa="wartość" Wybierz="0" /> <XSL:wartość z Wybierz='numer formatu($wartość, "$DDD,DDD,DDD.DD", "personel")' /> </XSL:szablon>

22 przemyślenia na temat „Wyświetlanie zawartości kwerendy sieci Web Part wyniki w siatce / Tabela

  1. Andreas

    AAA… było, bo inaczej o nazwie mój styl listy i nie zdawałem sobie sprawy, że w ContentQueryMain.xsl sprawdza "styl":

    <XSL:Kiedy test="@Style='NameOfMyStyle'">

    Z tym przemianowany ono pracował. 🙂

  2. Andreas

    To prawie pracował dla mnie: Udaje mi się wyjście </Tabela> koniec tagu poprawnie, ale brakuje znacznika początkowego. Wydaje się test = "$CurPos = 1" nie zwraca true. Ale dlaczego?

  3. Anand singh Rawat

    Wielki Post. Paweł mam zrobić wszystkie te rzeczy. Mam zapytanie, Jak puszka metalowa ja osiągnąć sumą "całkowita Expences rzeczywiste" lub sumę wartości dwóch kolumn.

  4. Lisa

    Możesz zrobić żadnej pracy przy tworzeniu niestandardowych plików xsl ContentQueryMain i ItemStyle? Powodem, dla którego pytam jest to, że nie chcą się martwić o moje niestandardowe style zastąpieniem wszelkie poprawki lub aktualizacji. Czy masz przykłady? Próbowałem Dokonywanie identycznych kopii ContentQueryMain.xsl i wgraniu nowych niestandardowych kopia do biblioteki stylów. Po umieszczeniu odwołanie do tego pliku xsl w jego Właściwość MainXslLink, Otrzymuję 401 nie dozwolone. Plik xsl niestandardowe jest opublikowana wersja i każdy ma dostęp do odczytu do niego.

  5. Greg Sheridan

    Cześć, to było bardzo pomocne delegowania. Mam to wszystko działa, i zmiana również wdrożony Mike Brown tak to grupy
    wyniki wewnątrz tabeli przez co wybrać jako parametru Group By w CQWB właściwości.
    Zrobiłem tytuł łącza również, tak działa ładnie. Mam jeszcze jeden problem, choć. Jestem grupowanie wyników przez Nazwa witryny. Wewnątrz tabeli, grupuje je ładnie, i świetnie wygląda, ale nadal jest wydrukowanie wszystkie grupy
    nazwy(w moim przypadku nazwy lokacji) powyżej tabeli. Czy ktoś wie jak pozbyć się z nich?
    Podziękowania,
    Greg

  6. Bez nazwy

    Fajny artykuł. Udało mi się dać moim stole wygląd domyślnej listy programu Sharepoint poprzez analizę kodu źródłowego listy. Oto główne bloki HTML musiała zmieścić się w ItemStyle:

    <Szerokość stołu = "100%" Klasa = "ms-listviewtable" border = 0 cellspacing = 0 cellpadding = 1 dir = "None">

    <!–NAGŁÓWEK–>
    <Klasa TR = "ms-viewheadertr" PIONIE = TOP>
    <TH nowrap zakres = "col" Klasa = "ms-vh2"><DIV styl = "szerokość:100%;stanowisko:względne;lewy:0;Do góry:0;">
    <Styl tabeli = "szerokość:100%;" CtxNum = "1" wysokość = "100%" cellspacing = 1 cellpadding = klasy 0 = "ms-unselectedtitle">
    <TR>
    <Szerokosci TD = "100%" Klasa = "ms-vb" nowrap>
    Texte du miano ici

    </TD>
    <Styl TD = "pozycji:bezwzględne;">
    </TD>
    </TR>
    </TABELA></DIV>
    </TH>

    <!–Powtórzyć wszystkie komórki nagłówka–>
    </TR>

    <!– Tabela danych –>
    <Klasa TR = "">
    <!–Kolumny danych, Użyj kod Pawła za pierwszym razem z hiperłączem –>
    <Klasa TD = "ms-vb2">Dane tutaj</TD>

    <!–Pusta kolumna–>
    <Klasa TD = "ms-vb2">
    <obejmują dir = None></zakres><
    /TD>

    <!–Kolumna Data–>
    <Klasa TD = "ms-vb2">
    <WSZELKIE PRAWA>11/12/2008</WSZELKIE PRAWA>
    </TD>
    </TR>

    <!–***Naprzemiennych wierszy – Użyj nowej zmiennej XSL, że wstawi alternatywne klasy oparte na bieżącym wierszu modulo 2–>
    <Klasa TR = "ms-na przemian">

    </TR>
    </TABELA>

  7. Mike Brown
    Zoltan,
    Byłem w pracy na ten sam problem jak ty. Chciał bym wszystkie moje elementy wyświetlane w sposób zgrupowane zamiast po prostu lits. Tutaj jest, jak mi się to osiągnąć.
    ContentQueryMain.xsl
    <XSL:Kiedy test="@Style='Grid'">
    <XSL:zastosowanie szablonów wybierz = "." tryb = "itemstyle">
    <XSL:z parametr Nazwa = "CurPos" Wybierz = "$CurPosition" />
    <XSL:Nazwa z param = ostatnia" Wybierz = "$LastRow" />
    <!–dodać, że ten nowy dział przekazać w parametrze wskazując nowej grupy rozpoczęła–>
    <XSL:z parametr Nazwa = "StartNewGroup" SELECT="@__begingroup" />
    </XSL:zastosowanie szablonów>
    </XSL:Kiedy>
    ItemStyle.xsl
    Dodać parametr
    <XSL:Parametr Nazwa = "StartNewGroup" />
    Dodać ten tekst jako pierwszy wiersz danych
    <XSL:Wybierz>
    <XSL:Kiedy test = "$StartNewGroup ="True"">
    <TR>
    <TD >
    <XSL:Wywołanie szablon name="OuterTemplate.GetGroupName">
    <XSL:Nazwa z param = "nazwa_grupy" SELECT="@*[Nazwa()= $Group]"/>
    <XSL:Nazwa z param = "GroupType" Wybierz = "$GroupType" />
    </XSL:Wywołanie szablon>
    </TD>
    </TR>
    </XSL:Kiedy>
    <XSL:w przeciwnym razie>
    </XSL:w przeciwnym razie>
    </XSL:Wybierz>
    Powinno to zająć problemu grupowania w swojej siatki. Każda grupa będzie teraz zaczynać nowy wiersz wskazujący nazwę grupy. W moje rozwiązanie rzeczywiście dodaje puste <TD /> dane do wcięcia to także tak zgrupowania stał się znacznie lepiej.
    Site1
    datacolumn1 datacolumn2 datacolumn3 itp

    datacolumn1 datacolumn2 datacolumn3 itp
    Lokacja2
    datacolumn1 datacolumn2 datacolumn3 itp
    Firmy Microsoft3

    datacolumn1 datacolumn2 datacolumn3 itp

    datacolumn1 datacolumn2 datacolumn3 itp
    itp.
  8. Zoltan
    Witaj Paul,
    Dzięki za post, udało mi się zorganizować mój wyniki kwerendy w siatce, co jest bardzo przydatne. Jednakże, Należy iść dalej i grupy moje wyniki oparte na stronach. W tej chwili, nazwy witryny są wyświetlane jako pierwsze, i to nie jest tylko jeden duży siatki, zbierając wszystkie wiersze z różnych stron. Cos w tym stylu:
    Nazwa Site1
    Nazwę Lokacja2
    Dane w sieci dla wszystkich stron
    Jakieś pomysły na to, co należy zmodyfikować w celu uzyskania danych w następujący sposób:
    Nazwa Site1
    Danych w siatce Site1
    Nazwę Lokacja2
    Danych w siatce Lokacja2
    Dzięki wyprzedzeniem,
    Zoltan
  9. Pierre Joubert
    Fantastyczny Post, rozwiązać mój problem, miałem.
    Moim jedynym problemem jest wyświetlane pole AssignedTo, Go skonfigurować z użytkownika"" Typ pola i importowanych webpart następnie wyświetla następujący komunikat o błędzie:
    "Wystąpił błąd podczas pobierania danych do wyświetlenia w ten składnik Web Part."
    Próbowałem za pomocą wszystkich typów możliwych pól, z wszystko inny użytkownik"" nie wyswietla błąd, ale to nie wyświetla nic w dziedzinie. Więc jestem przy założeniu typ pola użytkownika jest poprawny, więc musi być brakuje ustawienie gdzieś.
    Jakieś pomysły na to?
    Chodzi o
    Pierre
  10. Charftong
    Wielki Post!!! Obsługa bardzo miła.
    Szybkie pytanie, zrobiłeś żadnych prac na wyświetlanie pola PrzypisaneDo lub ModifiedBy z obecności? Z jakiegoś powodu, zawsze staram się wyświetlaną w polu przypisane do, w CQWP, to zawsze wyświetla jako przykład "203;#Charf Tong". Nie można znaleźć sposób na obejście tego.
  11. Jennifer Davis
    Paul
    Świetny artykuł, Dziękujemy. Robie coś bardzo podobnego, ale chcesz wyświetlić link do strony projektu, a nie element na liście. Na przykład, Mamy 25 najwyższym poziomie projektu witryny i każdy zawiera listę typów zawartości. Są to nazwa projektu, Podział, Opis. Ja potrzeba wobec używać składnika web part kwerendy zawartości danych i udało się, z wyjątkiem, że domyślnie adres URL zabiera mnie do wpisu elementu z listy i naprawdę potrzebujesz, aby zabrać mnie do strony projektu. Czy możesz dać mi jakieś Rady?
    Dziękujemy
    Jen
  12. Paul Galvin
    Kieren,
    Zawsze używaj programu visual studio do edycji XSL. To zapewnia kodowanie za pomocą kolorów i ma również pewne wsparcie intellisense dobre.
    –Paul
  13. Kieran napisał:

    Hi Paul,

    Podczas pracy z składnika web part kwerendy xml/xsl i zawartości, znalazłeś jakieś dobre sposoby, aby sformatować swojego xslt? Stara się wprowadzać zmiany i przetestować projekt okazuje prawo ból ** tylko za pomocą edytora tekstu…

    Wszystkiego najlepszego

  14. Michael Dipay
    W odniesieniu do kwestii miałam ostatni raz gdzie nie wyświetla obrazy z widoku siatki, ale zamiast wyświetla tekst (https://myweb.com/Marketing/images/icn-order.gif,). I udało się go rozwiązać za pomocą SharePoint Designer, przez tworzenie niestandardowego widoku i wybierając polecenie niestandardowe kolumny, które chcesz, aby wyświetlić. Okazało się, że typ kolumna obrazy są wyświetlane jako adres URL(przecinek) (np.. https://myweb.com/Marketing/images/icn-order.gif,). Bieżący format jest tekst, więc trzeba go zmienić na obraz z wspólnej xsl:wartość z zadań-> Formacie jako obraz. To zmienić sposób wyświetlania niestandardowych obrazów, które chciałem pokazać. Skopiowałem kod, aby pokazać obraz ( <IMG border ="0" src = "{podciąg-przed(@IcnOrder, ‘, ‘)}" /> ) I w pliku ItemStyle.xsl mam zmienić @PICTURECOLUMNNAME na kod <IMG border ="0" src = "{podciąg-przed(@IcnOrder, ‘, ‘)}" /> . Następnie zapisz ją. Teraz moje wyniki siatki tabela aby wyświetlić tekst, jak również obraz niestandardowy typ kolumny.
  15. Helen
    Hi Paul,
    Dzięki za świetny artykuł!
    Wspomniał, że formatowanie warunkowe – "Można również umieścić, w formatowanie warunkowe, jak wyświetlanie projektów, które przekroczyły ich budżet na czerwono." Zdarzy się to przykład kodu do tego?
    Dzięki jeszcze raz!
    Helen
  16. Michael Dipay
    Hi Paul,
    To był świetny artykuł i był w stanie wygenerować takie same wyniki, zgodnie z oczekiwaniami. Mam obowiązek Pokaż obraz w sieci, jako jeden z jej kolumn. To nie jest wyświetlanie obrazu na siatce ale zamiast Wyświetla adres url obrazu z (,) przecinek na końcu.
    (np.. https://myweb.com/Marketing/images/icn-order.gif, )
    Należy użyć obrazu lub obraz w CommonViewFields pole typu? (np.. InternalColumnName, Obraz)
    Podziękowania,
    Mike
  17. Saji Ijiyemi

    Twój post jest dokładnie co ja był patrząc pod kątem. Jednakże, Nie kumam do pracy.

    Mam dokumenty, które są przechowywane w różnych doc. biblioteki ale klasyfikowane za pomocą kolumny niestandardowe klasy (wybór: 1 lub 2. Ja potrzeba wobec używać CQWP aby pokazać te dokumenty w oparciu o ich Klasa.
    Udało mi się dodać CQWP, wyeksportować go do SPD, skonfigurować itemStyle.xls aby wyświetlić niestandardowe fileds w widoku listy. Jednakże, Nie można pomyślnie wdrożyć co tu opisujesz.

    Są kolumny, które chcesz, aby pokazać w moim CQWP:

    Typ pliku (Aby wyświetlić ikonę)
    Nazwa pliku
    Data ostatniej modyfikacji
    Zmodyfikowane przez Who
    Wyewidencjonowany
    Sprawdzone w komentarzach

    Obecnie mam wynik w formacie listy. Jak zmienić go na format talble.

    Podziękowania.

    Saji

Zostaw odpowiedź do Saji Ijiyemi Anuluj odpowiedź

Twoj adres e-mail nie bedzie opublikowany. wymagane pola są zaznaczone *