Áttekintést és célja
Kívül a doboz, MOSS’ Tartalomlekérdezési kijelző (CQWP) lista formátumban jeleníti meg az eredményeket, hasonló a keresési eredmények. Az is lehetséges, hogy az eredmény megjelenjen a rács formátumú (i.e. HTML-táblázat formátumban). Rács formátumok jobbak, bizonyos körülmények között. Leírja, hogyan, hogy ebben a cikkben hatás eléréséhez.
Üzleti forgatókönyv
Én dolgoztam egy ügyfél, egy vállalati szintű MOSS kiépítése. A besorolás úgy terveztük, hogy projektek első osztályú polgár a hierarchiában, és a saját felső szintű webhely. A projektmenedzserek fenntartani a projekt összefoglaló információit singleton listáját, mint a cím, költségvetés, várható elkészülési dátum, fennmaradó költségvetés és más összesítő típusú mezők. A "szingli" Úgy értem, egyéni SharePoint lista tartalmaz egyetlen tétel garantált. Leegyszerűsítve, úgy néz ki mint ez:
A technikai megközelítés, nagyjából ugyanaz, mint a leírt itt (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). A CQWP egy XSL-átalakító segítségével bocsátanak ki a HTML a böngésző tétele.
Mindig elképzelni az eredményt, mielőtt megmártózna az XSL, mert az XSL egy rémálom. Itt van a kívánt eredményt:
HTML-mint ez generál eredményező:
<HTML> <szerv> <központ> <táblázat határ= 1> <!-- Címkék--> <TR Háttérszín= kék> <TF><betűtípus szín= fehér><b>Projekt neve</b></betűtípus></TF> <TF igazításajobbra =><betűtípus szín= fehér><b>Teljes dátum</b></betűtípus></TF> <TF igazításajobbra =><betűtípus szín= fehér><b>Költségvetés</b></betűtípus></TF> <TF igazításajobbra =><betűtípus szín= fehér><b>Tényleges ráfordítás</b></betűtípus></TF> <TF><betűtípus szín= fehér><b>Általános állapot</b></betűtípus></TF> </TR> <TR> <TF>Újra a számítógépes teremben vezeték.</TF> <TF igazításajobbra =>02/01/08</TF> <TF igazításajobbra =>22,500.00</TF> <TF igazításajobbra =>19,000.00</TF> <TF>A folyamatban lévő</TF> </TR> <TR> <TF>Rendelkezésre a szerverek az SQL Upgrade</TF> <TF igazításajobbra =>04/01/08</TF> <TF igazításajobbra =>7,500.00</TF> <TF igazításajobbra =>0.00</TF> <TF>A tervezett</TF> </TR> </táblázat> </központ> </szerv> </HTML> |
Megközelítés
Kövesse az alábbi lépéseket, hogy hozzon létre a rács:
- A rács összetevőinek azonosítása (sorok/oszlopok).
- Határozza meg, és szükséges webhelyoszlopok létrehozása:.
- A projektek és a listák singleton weboldalak létrehozása.
- A CQWP hozzá egy weblaphoz, és beállítani, hogy a listák keresése.
- A CQWP XML-összegyűjti a további oszlopok módosítása.
- Az XSL-táblázatok létrehozása, módosítása.
Vagyok lesz, hogy a hat. Számok keresztül négy egyenes továbbít, és valamit, ami bármely CQWP felhasználó már. Az ötödik már jól dokumentált, mások, beleértve a teljes képernyő-shot terhelt cikk MSDN itt (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) és Heather Solomon's blog itt (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).
Anyák és csavarok
Kezdődik, és hajtsa végre a lépéseket egy öt, az MSDN-dokumentációban és Heather Salamon cikk.
Ezen a ponton, a CQWP hozzáadott az oldalra és már a <CommonViewFields> szükség szerint konfigurálva.
A szokásos lépések, Kapok ilyen közbenső eredmények:
1. Tartalomtípus létrehozása, sablonokkal egyéni lista tartalomtípushoz tartozó és a két telek. Itt van a tartalomtípus:
Itt van a webhelyszerkezet:
2. Az CQWP hozzáadása után az én projekt alwebhelyek és egyedi projekt összefoglaló listák létrehozása:
3. A kiegészítő információkat szeretné, keresztül a <CommonViewFields>:
<ingatlan név="CommonViewFields" típus="karakterlánc">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</ingatlan>
Ne feledje, hogy meg kellett tartani minden tulajdonságmezőt egy sorban, vagy nem működik (CQWP azt mondja, hogy a lekérdezés eredménye nem elemek).
4. Ezen a ponton, készen állunk, hogy túllépjünk az MSDN-cikket és flip-a cikket Heather Salamon. Ő lépésekkel kezdő lépés közelében #5 hogy hozzon létre egy testreszabott / unghosted változat-ból ItemStyle.xsl. Én követ a Heather barátait tanácsadás, keresztül lép fel 11 és ezek a részeredmények:
4.1: Az XSL-sablont a következőképpen nevezze:
<XSL:sablon neve = "rács" mérkőzés = "sor[@Style = "Hálózat"]" Mode = "itemstyle">
Is kissé módosítani, ő azt javasolta <XSL:for each …> hozzáadásával egy <br /> cédula-hoz beszerez egy tisztább lista:
<XSL:for each Válassza ki="@*"> P:<XSL:érték-ból Válassza ki="név()" /><br/> </XSL:for each>
4.2: Módosítható a kijelző, megy megjelenését, és válassza a "Grid" stílus:
Alkalmaz a cserél, és itt az eredmény:
A fentiekből látjuk-e, hogy a mezőket szeretnénk (Projekt neve, költség, állapot, stb) elérhető számunkra, hogy használja, ha a kibocsátó a HTML. Nem csak, hogy, de azt látjuk, a nevét, amellyel mi hivatkoznia kell azokat az oszlopokat az XSL. Például, Mi referencia projektállapot-mint "Project_x005F_x0020_Name".
Ezen a ponton, Mi indulnak, Heather barátait blog, és ezek az óriások vállán, Én hozzá a saját kis.
ContentQueryMain.xsl
MEGJEGYZÉS:: Hogy mind a ContentQueryMain.xsl, valamint a ItemStyle.xsl, le kell ellenőrizni, mielőtt a változtatások hatásainak megtekintéséhez vissza ezeket a fájlokat.
Rács-gyártás céljából, MOSS használja két különböző XSL-fájlok eredményekkel, azt látjuk, a CQWP. Generálni a korábbi bit kimeneti, ItemStyle.xsl módosítása. MOSS valójában használ egy XSL-fájl, Generálni a HTML ItemStyle.xsl együtt a ContentQueryMain.xsl. Ahogy nevéből is, ContentQueryMain.xsl a "fő" XSL, amely szabályozza az általános fordítás. A talált elemek telepítéseket, és átadja nekik egy-egy sablonok a ItemStyle.xsl. Mi lesz módosít generálni a nyílt ItemStyle.xsl <táblázat> előtt a kibocsátó az első sor az adatok és a záró tag <táblázat> tag után az utolsó sor kibocsátó. Ehhez, ContentQueryMain.xsl módosul, hogy két paramétert adja át a "grid" ItemStyle.xsl-sablon, "utolsó sor" és az "aktuális sor". ItemStyle.xsl használja ezeket, hogy feltételesen bocsátanak ki a szükséges címkék.
Heather Salamon technikával, Mi keressük meg a ContentQueryMain.xsl. Nem található ugyanazon a helyen, mint ItemStyle.xsl. Segítenie kell a képernyő szemcsésedik:
A következő módosításokat kell:
- Módosíthat egy xsl-sablont, "A CallItemTemplate" hogy valóban elindítja a rács sablon ItemStyle.xsl. Mi át két paramétert a rács sablont, hogy ez lesz a nyitó és záró feltételesen létrehozásához szükséges adatok <táblázat> Címkék.
- Egy kis ContentQueryMain.xsl, hogy felhívja a "CallItemTemplate módosítása" átadni egy "LastRow" a paraméter, hogy LastRow lehet hárítani a rács sablon.
Keresse meg a "OuterTemplate.CallItemTemplate nevezett sablon" a karakterlánc azonosítja:
<XSL:sablon név="OuterTemplate.CallItemTemplate">
Cserélje ki az egész sablon az alábbiak szerint:
<XSL:sablon név="OuterTemplate.CallItemTemplate"> <XSL:param név="CurPosition" /> <!-- Add hozzá a "LastRow" a paraméter. Mi csak akkor használja, ha a cikk stílusa hágó-ban "Rács". --> <XSL:param név="LastRow" /> <XSL:Válassza a> <XSL:mikor teszt="@Style = "NewsRollUpItem""> <XSL:apply-templates Válassza ki="." mód="itemstyle"> <XSL:with-param név="EditMode" Válassza ki="$cbq_iseditmode" /> </XSL:apply-templates> </XSL:mikor> <XSL:mikor teszt="@Style = "NewsBigItem""> <XSL:apply-templates Válassza ki="." mód="itemstyle"> <XSL:with-param név="CurPos" Válassza ki="$CurPosition" /> </XSL:apply-templates> </XSL:mikor> <XSL:mikor teszt="@Style = "NewsCategoryItem""> <XSL:apply-templates Válassza ki="." mód="itemstyle"> <XSL:with-param név="CurPos" Válassza ki="$CurPosition" /> </XSL:apply-templates> </XSL:mikor> <!-- Jelenlegi helyzetét, és a lastrow át a rács itemstyle.xsl sablon. ItemStyle.xsl fog használni, hogy a nyílt bocsátanak ki és záró <táblázat> Címkék. --> <XSL:mikor teszt="@Style = "Hálózat""> <XSL:apply-templates Válassza ki="." mód="itemstyle"> <XSL:with-param név="CurPos" Válassza ki="$CurPosition" /> <XSL:with-param név="Utolsó" Válassza ki="$LastRow" /> </XSL:apply-templates> </XSL:mikor> <XSL:egyébként> <XSL:apply-templates Válassza ki="." mód="itemstyle"> </XSL:apply-templates> </XSL:egyébként> </XSL:Válassza a> </XSL:sablon> |
A hozzászólások írja le a módosítások célja.
természetesen, a "OuterTemplate.CallItemTemplate" hívják magát egy másik sablon. Keresse meg a sablon ezen szöveges kereséssel:
<XSL:sablon név="OuterTemplate.Body">
Görgesse végig a OuterTemplate.Body utasításait, és helyezze be a LastRow paramétert a következő (ábrán egy magyarázat dőlt betűvel):
<XSL:call-template név="OuterTemplate.CallItemTemplate"> <XSL:with-param név="CurPosition" Válassza ki="$CurPosition" /> <!-- A LastRow paraméter beszúrása. --> <XSL:with-param név="LastRow" Válassza ki="$LastRow"/> </XSL:call-template>
Elvégre, ez a, Mi végül a dolgokat létrehozni megfelelően úgy, hogy a ItemStyle.xsl is bocsát ki <táblázat> Címkék: a megfelelő helyre.
ItemStyle.Xsl
MEGJEGYZÉS:: Újra, Ellenőrizze a ItemStyle.xsl után, hogy bármit módosítana, úgy, hogy e változások hatása.
Itt van két tevékenység:
- Cserélje ki a teljes rács sablon. Ön is másol/tészta alatt.
- Adjunk hozzá néhány hókusz-pókusz kívül a sablondefiníció, amely lehetővé teszi a "formatcurrency" sablon dolgozni. (Meg tudod mondani, hogy van egy vékony fogantyú XSL).
Első, ItemStyle.xsl tetején, ezt a sort:
<!-- Néhány hókusz-pókusz, amely lehetővé teszi számunkra, hogy megjelenítsük a U.S. pénznem. --> <XSL:tizedes formátum név="a személyzet" számjegy="D" /> <XSL:sablon név="Alapértelmezett" meccs="*" mód="itemstyle">
Megjegyzés:, hogy nem hozzá közvetlenül az út előtt a <XSL:sablon neve = "alapértelmezett" …> meghatározás.
Következő, menj vissza a rács sablon. Az alábbi kódot cserélje ki a teljes rács sablon. Ez alaposan magyarázat, elektronikus levél én, vagy hagyja megjegyzéseket a blogomban, ha kérdése van, ne habozzon, de.
<XSL:sablon név="Rács" meccs="Sor[@Style = "Hálózat"]" mód="itemstyle"> <!-- ContentMain.xsl halad a CurPos és az utolsó. Is használja ezeket, hogy feltételesen bocsátanak ki a nyílt és záró <táblázat> Címkék. --> <XSL:param név="CurPos" /> <XSL:param név="Utolsó" /> <!-- A következő változók változatlan, a szabványos ItemStyle.xsl --> <XSL:változó név="SafeImageUrl"> <XSL:call-template név="OuterTemplate.GetSafeStaticUrl"> <XSL:with-param név="UrlColumnName" Válassza ki=""ImageUrl""/> </XSL:call-template> </XSL:változó> <XSL:változó név="SafeLinkUrl"> <XSL:call-template név="OuterTemplate.GetSafeLink"> <XSL:with-param név="UrlColumnName" Válassza ki=""LinkUrl""/> </XSL:call-template> </XSL:változó> <XSL:változó név="DisplayTitle"> <XSL:call-template név="OuterTemplate.GetTitle"> <XSL:with-param név="Cím" Válassza ki="@Title"/> <XSL:with-param név="UrlColumnName" Válassza ki=""LinkUrl""/> </XSL:call-template> </XSL:változó> <XSL:változó név="LinkTarget"> <XSL:Ha teszt="@OpenInNewWindow = "True"" >_blank</XSL:Ha> </XSL:változó> <!-- Itt mi határozza meg egy változó, "tableStart". Ez tartalmazza a HTML, hogy használunk határozza meg a táblázatban, valamint az oszlopfeliratok megnyitója. Megjegyzés: Ha CurPos = 1, Ez magában foglalja a HTML egy CDATA-tag. Egyébként, üres lesz. A tableStart értéke emited minden alkalommal, amikor ItemStyle az úgynevezett ContentQueryMain.xsl keresztül. --> <XSL:változó név="tableStart"> <XSL:Ha teszt="$CurPos = 1"> <![CDATA[ <Táblázatszegély = 1> <TR bgcolor = "blue"> <TF><betűszín = "fehér"><b>Projekt neve</b></betűtípus></TF> <TD igazítása = "jobb"><betűszín = "fehér"><b>Teljes dátum</b></betűtípus></TF> <TD igazítása = "jobb"><betűszín = "fehér"><b>Költségvetés</b></betűtípus></TF> <TD igazítása = "jobb"><betűszín = "fehér"><b>Tényleges ráfordítás</b></betűtípus></TF> <TF><betűszín = "fehér"><b>Általános állapot</b></betűtípus></TF> </TR> ]]> </XSL:Ha> </XSL:változó> <!-- Egy másik változó, tableEnd egyszerűen határozza meg, hogy a záró táblázat tag. Mint-val tableStart, -a ' mindig emited. Éppen ezért az érték van rendelve feltételesen alapján, hogy mi már az utolsó sor által elfogadott ContentQueryMain.xsl. --> <XSL:változó név="tableEnd"> <XSL:Ha teszt="$CurPos = $Last"> <![CDATA[ </táblázat> ]]> </XSL:Ha> </XSL:változó> <!-- Mindig bocsát ki a tartalmát tableStart. Ha ez nem az első sort át hozzánk a ContentQueryMain.xsl, Aztán tudjuk, hogy az érték üres lesz. Tiltsa le a kimeneti elől, mert mikor tableStart ez nem üres, Ez magában foglalja a tényleges HTML, hogy szeretnénk tenni a böngésző. Ha nem mondunk az XSL elemzőt hoz megbénít kimeneti elől, Ez akarat létrehoz a cucc, mint a"<táblázat>" Ahelyett, hogy"<táblázat>". --> <XSL:érték-ból Válassza ki="$tableStart" Megbénít kimeneti elől="igen"/> <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 --> <TF> <XSL:érték-ból Válassza ki="@Project_x005F_x0020_Name"/> </TF> <TF igazítása="jobb"> <XSL:érték-ból Válassza ki="@Project_x005F_x0020_End_x005F_x0020_Date"/> </TF> <TF igazítása="jobb"> <XSL:call-template név="FormatCurrency"> <XSL:with-param név="érték" |
Ez hihetetlenül hasznos volt. köszönöm!
Áh… azért, mert a nevezett a listastílus különbözően, és nem vette észre, hogy az a ContentQueryMain.xsl ellenőrzi a "stílus":
<XSL:Amikor test="@Style='NameOfMyStyle" ">
Azzal, hogy átnevezték kialakult. 🙂
Ez majdnem munkás értem: Én kezel-hoz kimenet a </táblázat> zárócímke helyesen, de a kezdő címke hiányzik. Úgy tűnik, hogy a teszt = "$CurPos = 1" nem adja vissza igaz. De miért?
Nagy felad. Nekem van megtett minden a fenti dolog Pál. Nekem van egy kérdés, Hogyan lehet elérni a "teljes tényleges költségek összege" vagy két oszlop értékének összege.
Tettél minden munka az egyéni ContentQueryMain és a ItemStyle xsl-fájlok létrehozása? Az OK én kérdezek, hogy nem akarnak aggódik körülbelül lét átírt javítások vagy fejlesztések egyéni stílusok. Van példa? Én már próbáltam így azonos másolatait a ContentQueryMain.xsl és az új egyéni példányt feltöltése a stílus könyvtár. Amikor üzembe ezen xsl-fájlra hivatkozik a .webpart MainXslLink ingatlan, Én kap 401 nem engedélyezett. Az egyéni xsl-fájl közzétett verziója, és mindenki rendelkezik olvasási hozzáféréssel.
fantasztikus felad köszönet! Van harcoló ez most részére a utolsó kevés napok.
szia, Ez volt igazán segíteni kész kiküldetés. Megvan minden dolgozó, és így azt is megvalósított Mike Brown változás
az eredmények belül az asztalt, amit választok paraméterként a csoportosítás a CQWB tulajdonságai.
Tettem a cím egy link is, így ez szerkezet gondosan. Még mindig van egy probléma, Bár. Vagyok csoportosítása az eredmények-webhely neve. A tábla belsejében, csoportosítja őket szépen, és úgy néz ki, nagy, de ez még mindig a csoport nyomtatás
nevek(az én esetemben a helykapcsolatba) a táblázat felett. Csinál akárki tud hogyan viselkedni megszabadulni ez?
kösz,
Greg
Szép cikk. Én kezelt-hoz ad az én-m táblázat alapértelmezett Sharepoint-listák megjelenésének elemzésével a forráskódot a lista. Itt van szükség, hogy illeszkedjen a ItemStyle fő HTML-tömböket:
<ASZTAL szélesség = "100 %" Class = "ms-listviewtable" border = 0 cellspacing = 0 cellpadding = 1 dir = "None">
<!–FEJLÉC–>
<TR class = "ms-viewheadertr" VALIGN = FELSŐ>
<TH nowrap hatókör = "col" Class = "ms-vh2"><DIV stílusú "width =:100%;pozíció:relatív;bal:0;Top:0;">
<Táblázatstílus = "szélesség:100%;" CtxNum = "1" magasság = "100 %" a CellSpacing = 1 cellpadding = 0 class = "ms-unselectedtitle">
<TR>
<TD szélessége = "100 %" Class = "ms-vb" nowrap>
Texte du titer ici
</TD>
<TD-style = "pozíció:abszolút;">
</TD>
</TR>
</TÁBLÁZAT></Div>
</TH>
<!–Ismételje meg az összes fejléc-cella–>
</TR>
<!– Táblázat adatai –>
<TR class = "">
<!–Oszlop, az első egy hivatkozást, a Pál-kóddal –>
<TD Class = "ms-vb2">Adat itt</TD>
<!–Üres oszlop–>
<TD Class = "ms-vb2">
<span dir = egyik sem></span><
/TD>
<!–Dátum oszlopban–>
<TD Class = "ms-vb2">
<NOBR>11/12/2008</NOBR>
</TD>
</TR>
<!–***Helyettes sor – Használ egy új XSL változó, hogy bekerül a másik osztály alapuló az aktuális sor modulo 2–>
<TR class = "ms-váltakozó">
…
</TR>
</TÁBLÁZAT>
Amit pontosan kerestem...Ön ringat ember...Éljen.Szeretlek, a post..
<XSL:apply-templates válassza ki = "." Mode = "itemstyle">
<XSL:with-param név = "CurPos" Válassza a "$CurPosition =" />
<XSL:with-param név = "utolsó" Válassza a "$LastRow =" />
<XSL:with-param név = "StartNewGroup" SELECT="@__begingroup" />
</XSL:mikor>
<XSL:Mikor teszt = "$StartNewGroup ="True"">
<TR>
<TF >
<XSL:call-template name="OuterTemplate.GetGroupName">
<XSL:with-param név = "csoportnév" SELECT="@*[név()$Group =]"/>
<XSL:with-param név = "GroupType" Válassza a "$GroupType" = />
</XSL:call-template>
</TF>
</TR>
</XSL:mikor>
<XSL:egyébként>
</XSL:egyébként>
</XSL:Válassza a>
Szia Paul,
Amikor a dolgozó a tartalom és a xml/xsl tartalomlekérdezési kijelző, találtál valami jó módja az xslt formázni? Kipróbálás-hoz csinál megváltozik, és a terv tesztelése bizonyul a jogot fájdalom a egy ** csak egy szövegszerkesztővel…
Minden jót
(pl. https://myweb.com/Marketing/images/icn-order.gif, )
Kell használni kép vagy kép a CommonViewFields mező típus? (pl. InternalColumnName, Kép)
A felad pontosan mi voltam őt keresve. Azonban, Én vidám kap ez-hoz dolgozik.
Nekem van a különböző doc tárolt dokumentumokat. könyvtárak, de minősített egyéni osztály oszlop használatával (választás: 1 vagy 2. Szeretnék venni-t használ CQWP-hoz mutat ezek a dokumentumok felveszik alapuló osztály.
Voltam képes-hoz összead a CQWP, exportálása az SPD, a itemStyle.xls megjelenítéséhez egyéni mezot listanézetben konfigurálása. azonban, Én lehet nem sikeresen végrehajtani, amit itt le.
Ezek az oszlopok, szeretnék venni-t mutat-ban az én-m CQWP:
Fájltípus (megmutatni, hogy ikonjára)
Fájl címe
Utolsó módosítás dátuma
Módosított aki
Kivett
Észrevételek beadása
Én jelenleg az eredmény egy lista formátumban. Hogyan csinál én cserél ez-talble formátumra.
kösz.
Péter
Elnézést a missspelling, a nevem nem biztos, hogy ahol a ” jött a.