Ülevaade ja eesmärk
Karbist välja, MOSS’ Sisu sisupäringu veebiosa (CQWP) kuvab loendi kujul tulemusi, sarnane Otsingu tulemused. Samuti on võimalik kuvada tulemused võrgustikuvormingus (St. HTML tabeli valmisvormingut). Koordinaatvõrgu vormingud on mõningatel juhtudel parem. Ma kirjeldada, kuidas saavutada kõnealuse mõju käesolevas artiklis.
Äri stsenaariumi
Olen töötanud koos kliendiga linna ettevõttesiseseks MOSS levikuga. Oleme loonud oma taksonoomia selliselt, et projektid on esimese klassi kodanikud hierarhia ning on oma kõrgema taseme saidi. Projektijuhid haldavad singleton projekti kokkuvõtlik teave, nagu pealkiri, eelarve, oodatav Valmimisaeg, ülejäänud eelarve ja muude kokkuvõtte tüüp. Mida "singleton" Ma mõtlen kohandatud SharePointi loend sisaldada ainult üht kaubanimetust garanteeritud. Lihtsustatult, See näeb välja selline:
Tehniline lähenemine on palju sama, nagu on kirjeldatud Siin (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). Et CQWP kasutab XSL-transformatsiooni paisata HTML brauseri renderdamiseks.
Ma alati kujutlevad tulemus enne sukeldudes XSL-i, sest XSL on õudusunenägu. Siin on minu soovitud tulemust:
HTML niimoodi loob tulemuse:
|
<HTML>
<keha>
<keskus>
<Tabel ääris= 1>
<!-- Sildid-->
<TR bgcolor= sinine>
<TD><font värv= valge><b>Projekti nimi</b></font></TD>
<TD joondamine= õigus><font värv= valge><b>Lõpetatud kuupäev</b></font></TD>
<TD joondamine= õigus><font värv= valge><b>Eelarve</b></font></TD>
<TD joondamine= õigus><font värv= valge><b>Tegelik kulu</b></font></TD>
<TD><font värv= valge><b>Üldist seisundit</b></font></TD>
</TR>
<TR>
<TD>Uuesti traat arvuti tuba.</TD>
<TD joondamine= õigus>02/01/08</TD>
<TD joondamine= õigus>22,500.00</TD>
<TD joondamine= õigus>19,000.00</TD>
<TD>Pooleli</TD>
</TR>
<TR>
<TD>Sätte servereid SQL Upgrade</TD>
<TD joondamine= õigus>04/01/08</TD>
<TD joondamine= õigus>7,500.00</TD>
<TD joondamine= õigus>0.00</TD>
<TD>Planeeritud</TD>
</TR>
</Tabel>
</keskus>
</keha>
</HTML>
|
Lähenemine
Järgmiste juhiste abil luua võrgustiku:
- Kindlaks määrata võrgu komponendid (read/veerud).
- Määrata ja luua vajalikud saidiveergudest.
- Loo alasaidid projektide ja singleton nimekirjad.
- Nende CQWP lisamiseks veebilehele ja konfigureerida otsima oma nimekirjad.
- CQWP's XML tarima täiendavate veergude muutmine.
- Muuda XSL genereerimiseks andmetabeli.
Ma lähen, et keskenduda number kuus. Numbrid üks läbi neli on sirgjooneliselt ja midagi, mis tahes CQWP kasutaja on juba teinud. Number viis on olnud hästi dokumenteeritud teised sealhulgas ammendav screen-shot koormaga artiklist MSDN Siin (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) ja Heather Solomon's blog Siin (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).
Mutrid ja poldid
Alustada ja rakendada juhiseid üks 5 seisuga MSDN-i dokumentatsiooni ja Heather Solomon artikli.
Sel hetkel, Olen lisanud oma CQWP lehele ja on teil oma <CommonViewFields> konfigureeritud vastavalt vajadusele.
Pärast tavalist tegevust, Ma saan neid vahepealseid tulemusi:
1. Luua sisutüübi, mallipõhise kohandatud loendi sisutüübi ja kaks objektidele. Siin on sisu tüüp:
Siin on saidi struktuur:
2. Lisage selle CQWP pärast loomist minu projekti alamsaidid ja singleton projekti kokkuvõtlik nimekirjad:
3. Soovin kaudu täiendava teabe lisamiseks ning <CommonViewFields>:
<kinnisvara Nimi="CommonViewFields" tüüp="stringi">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</kinnisvara>
Teadmiseks, et pidin hoidma kõik atribuudiväljad ühel real või see ei tööta (CQWP oleks mulle, et päring pole üksusi tagastanud).
4. Sel hetkel, Me oleme valmis minema kaugemale MSDN artikli ja flip üle Heather Solomon artikli. Tema juhiste alustades asuvaid samm #5 luua ka kohandatud / unghosted versioon ItemStyle.xsl. Jälgin Heather's nõu, läbi step up 11 ja saada neid vahepealseid tulemusi:
4.1: Nimi minu XSL-malli järgmiselt.:
<XSL-i:malli nimi = "Grid" vasta = "rida[@Style = "Grid"]" mode = "itemstyle">
Ma ka pisut muuta tema soovitas <XSL-i:puhul iga …> lisades on <br /> Tag pakkuda cleaner loetelu:
<XSL-i:puhul iga Valige="@*">
P:<XSL-i:väärtuse kohta Valige="Nimi()" /><br/>
</XSL-i:puhul iga>
4.2: Selle veebiosa muutmine, Mine välimus ja valige minu "Grid" stiil:
Muudatuse rakendamiseks ja siin on tulemus:
Näeme, et et väljad tahame (Projekti nimi, kulu, olek, jne) on olemas, me kasutame kui me paisata HTML. Mitte ainult, et, Aga näeme nimed, millega me viide need veerud XSL-i. Näiteks, me viide projekti olek on "Project_x005F_x0020_Name".
Sel hetkel, Me väljuvad Heather's blog ja need giants õlad, Lisan oma natuke.
ContentQueryMain.xsl
MÄRKUS: Kui muudate nii ContentQueryMain.xsl kui ka ItemStyle.xsl, sa pead kontrollima neid faile tagasi, enne kui te näha tehtud muudatuste toimet.
Koordinaatvõrgu tegemise eesmärgil, MOSS kasutab kahte erinevat XSL-failides jõuda tulemusteni, mida näeme, on CQWP. Genereerida väljundi eelmise bit, oleme muutnud ItemStyle.xsl. MOSS tegelikult kasutab teise XSL fail, ContentQueryMain.xsl koos ItemStyle.xsl luua oma HTML-. Nagu nimigi, ContentQueryMain.xsl on peamine"" XSL-i, mis kontrollib üldist voolu tõlge. Ta kordab kaudu leitud esemed ja läbib neid ükshaaval malle ItemStyle.xsl. Me muuta ItemStyle.xsl genereerimiseks Ava <Tabel> Tag enne kiirgavad esimese rea andmeid ja sulgemine <Tabel> pärast viimase rea kiirgavad tag. Selle saavutamiseks, ContentQueryMain.xsl on muudetud läbida kaks parameetrid meie "grid" Mall ItemStyle.xsl, "viimases row" ja "praegune rida". ItemStyle.xsl kõnealuseid mehhanisme tingimuslikult paisata vajalikud Sildid.
Heather Saalomoni tehnikas, me leida ContentQueryMain.xsl. Hotell asub samas kohas kui ItemStyle.xsl. See pilt peaks aitama:
Meil on vaja teha järgmised muudatused:
- XSL-malli muutmine, "CallItemTemplate" mis tegelikult tugineb meie Grid malli ItemStyle.xsl. Me läheb kahest parameetrist Grid malli nii, et ta on tingimuslikult genereerida avamise ja sulgemise andmed <Tabel> Sildid.
- Muuda teine natuke ContentQueryMain.xsl, mis kutsub "CallItemTemplate" edasi "LastRow" parameeter nii et LastRow võib edasi meie Grid Mall.
Leidke malli nimeks "OuterTemplate.CallItemTemplate" määratud stringi:
<XSL-i:Mall Nimi="OuterTemplate.CallItemTemplate">
Asendada kogu malli järgmiselt.:
|
<XSL-i:Mall Nimi="OuterTemplate.CallItemTemplate">
<XSL-i:Param Nimi="CurPosition" />
<!--
Lisa "LastRow" parameeter.
Me kasutada vaid siis, kui kauba laad läbima on "Võrgustik".
-->
<XSL-i:Param Nimi="LastRow" />
<XSL-i:Valige>
<XSL-i:Kui test="@Style = 'NewsRollUpItem'">
<XSL-i:kehtivad Blanketid Valige="." režiim="itemstyle">
<XSL-i:koos param Nimi="EditMode" Valige="$cbq_iseditmode" />
</XSL-i:kehtivad Blanketid>
</XSL-i:Kui>
<XSL-i:Kui test="@Style = 'NewsBigItem'">
<XSL-i:kehtivad Blanketid Valige="." režiim="itemstyle">
<XSL-i:koos param Nimi="CurPos" Valige="$CurPosition" />
</XSL-i:kehtivad Blanketid>
</XSL-i:Kui>
<XSL-i:Kui test="@Style = 'NewsCategoryItem'">
<XSL-i:kehtivad Blanketid Valige="." režiim="itemstyle">
<XSL-i:koos param Nimi="CurPos" Valige="$CurPosition" />
</XSL-i:kehtivad Blanketid>
</XSL-i:Kui>
<!--
Liigu hetkeolukorda ja lastrow Grid itemstyle.xsl Mall.
ItemStyle.xsl kasutab seda paisata avamaal ja sulgemine <Tabel> Sildid.
-->
<XSL-i:Kui test="@Style = "Võrgu"">
<XSL-i:kehtivad Blanketid Valige="." režiim="itemstyle">
<XSL-i:koos param Nimi="CurPos" Valige="$CurPosition" />
<XSL-i:koos param Nimi="Kesta" Valige="$LastRow" />
</XSL-i:kehtivad Blanketid>
</XSL-i:Kui>
<XSL-i:muidu>
<XSL-i:kehtivad Blanketid Valige="." režiim="itemstyle">
</XSL-i:kehtivad Blanketid>
</XSL-i:muidu>
</XSL-i:Valige>
</XSL-i:Mall>
|
Kommentaarid kirjeldavad muudatuste eesmärk.
Muidugi, "OuterTemplate.CallItemTemplate" nimetatakse ise mõnest muust mallist. Leidke malli tekstistring otsides:
<XSL-i:Mall Nimi="OuterTemplate.Body">
Sirvige OuterTemplate.Body juhiseid ja sisestada LastRow parameeter järgmiselt (näidatud kaldkirjas kommentaar):
<XSL-i:kõne-Mall Nimi="OuterTemplate.CallItemTemplate">
<XSL-i:koos param Nimi="CurPosition" Valige="$CurPosition" />
<!-- LastRow parameetri lisada. -->
<XSL-i:koos param Nimi="LastRow" Valige="$LastRow"/>
</XSL-i:kõne-Mall>
Pärast kõike seda, Meil on lõpuks asjad nii, et meie ItemStyle.xsl võivad paisata õigesti seadistatud <Tabel> Sildid õiges kohas.
ItemStyle.Xsl
MÄRKUS: Uuesti, Kontrollige ItemStyle.xsl pärast muutuste tegemist, et vaadata nende muutuste mõju.
Meil on kaks ülesannet siin:
- Kogu koordinaatvõrgu malli asendada. Te saate kopeeri/kleebi alt.
- Lisada mõned mumbo jumbo malli määratlusest, mis võimaldab "formatcurrency" malli tööle. (Võiks öelda, et mul on hõre käepide XSL).
Esimese, ItemStyle.xsl ülaosas, Lisa see rida:
<!-- Mõned mumbo jumbo, mis võimaldab meil Kuva USA. valuuta. -->
<XSL-i:kümnend-vormingus Nimi="töötajad" kohaline="D" />
<XSL-i:Mall Nimi="Vaikimisi" vaste="*" režiim="itemstyle">
Märkus et lisasin ta vahetult enne selle <XSL-i:malli nimi = "vaikimisi" …> määratlus.
Järgmine, minna tagasi meie Grid malli. Kogu koordinaatvõrgu malli asendada alljärgnev kood. Põhjalikult kommenteeritud, Aga ärge kartke emaili mulle või kommenteerida minu blogi, kui teil on küsimusi.
|
<XSL-i:Mall Nimi="Grid" vaste="Rida[@Style = "Võrgu"]" režiim="itemstyle">
<!--
ContentMain.xsl läbib CurPos ja Viimane.
Me kasutame neid tinglikult paisata avamaal ja sulgemine <Tabel> Sildid.
-->
<XSL-i:Param Nimi="CurPos" />
<XSL-i:Param Nimi="Kesta" />
<!-- Järgmised muutujad on ümberehitamata standard ItemStyle.xsl -->
<XSL-i:muutuja Nimi="SafeImageUrl">
<XSL-i:kõne-Mall Nimi="OuterTemplate.GetSafeStaticUrl">
<XSL-i:koos param Nimi="UrlColumnName" Valige="'ImageUrl'"/>
</XSL-i:kõne-Mall>
</XSL-i:muutuja>
<XSL-i:muutuja Nimi="SafeLinkUrl">
<XSL-i:kõne-Mall Nimi="OuterTemplate.GetSafeLink">
<XSL-i:koos param Nimi="UrlColumnName" Valige="'LinkUrl'"/>
</XSL-i:kõne-Mall>
</XSL-i:muutuja>
<XSL-i:muutuja Nimi="DisplayTitle">
<XSL-i:kõne-Mall Nimi="OuterTemplate.GetTitle">
<XSL-i:koos param Nimi="Pealkiri" Valige="@Title"/>
<XSL-i:koos param Nimi="UrlColumnName" Valige="'LinkUrl'"/>
</XSL-i:kõne-Mall>
</XSL-i:muutuja>
<XSL-i:muutuja Nimi="LinkTarget">
<XSL-i:Kui test="@OpenInNewWindow = "True"" >_blank</XSL-i:Kui>
</XSL-i:muutuja>
<!--
Siin me defineerime muutuja, "tableStart". See sisaldab HTML, mida me kasutame määratleda tabelis kui ka veerusilte avamine. Pange tähele, et kui CurPos = 1, See sisaldab HTML CDATA tag.
Muidu, jääb tühjaks.
TableStart väärtus on emited, iga kord, kui ItemStyle on nn ContentQueryMain.xsl kaudu.
-->
<XSL-i:muutuja Nimi="tableStart">
<XSL-i:Kui test="$CurPos = 1">
<![CDATA[
<tabeli äärise = 1>
<TR bgcolor = "blue">
<TD><fondi värv = valge><b>Projekti nimi</b></font></TD>
<TD joondada = "paremale"><fondi värv = valge><b>Lõpetatud kuupäev</b></font></TD>
<TD joondada = "paremale"><fondi värv = valge><b>Eelarve</b></font></TD>
<TD joondada = "paremale"><fondi värv = valge><b>Tegelik kulu</b></font></TD>
<TD><fondi värv = valge><b>Üldist seisundit</b></font></TD>
</TR>
]]>
</XSL-i:Kui>
</XSL-i:muutuja>
<!--
Teine muutuja, tableEnd lihtsalt määratleb sulgemine tabeli silt.
Nagu tableStart, See on alati emited. Seetõttu selle väärtuseks määrati tingimisi põhineb kas me oleme läbinud viimase rea ContentQueryMain.xsl.
-->
<XSL-i:muutuja Nimi="tableEnd">
<XSL-i:Kui test="$CurPos = $Last">
<![CDATA[ </Tabel> ]]>
</XSL-i:Kui>
</XSL-i:muutuja>
<!--
Alati paisata tableStart sisu. Kui see ei ole meile ContentQueryMain.xsl möödusid esimeses reas, siis teame, et selle väärtus olla tühi.
Keela väljund põgenedes, sest kuna tableStart see ei ole tühi, See hõlmab tegelikku HTML, mida me tahame brauseris renderdada. Kui me ei ütle XSL parserit blokeerida väljund põgenedes, See loob asju"<Tabel>" selle asemel on"<Tabel>".
-->
<XSL-i:väärtuse kohta Valige="$tableStart" Keela väljund põgenedes="Jah"/>
<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-i:väärtuse kohta Valige="@Project_x005F_x0020_Name"/>
</TD>
<TD joondamine="paremale">
<XSL-i:väärtuse kohta Valige="@Project_x005F_x0020_End_x005F_x0020_Date"/>
</TD>
<TD joondamine="paremale">
<XSL-i:kõne-Mall Nimi="formatcurrency">
<XSL-i:koos param Nimi="väärtus" Valige="@Project_x005F_x0020_Budget"></XSL-i:koos param>
</XSL-i:kõne-Mall>
</TD>
<TD joondamine="paremale">
<XSL-i:kõne-Mall Nimi="formatcurrency">
<XSL-i:koos param Nimi="väärtus" Valige="@Project_x005F_x0020_Expenses"> </XSL-i:koos param>
</XSL-i:kõne-Mall>
</TD>
<TD>
<XSL-i:väärtuse kohta Valige="@Project_x005F_x0020_Status"/>
</TD>
<!--
Kõik järgmised on kommenteerinud välja selgitada asju.
Aga, tagasi tuua ja see värk on <TD> et näha selle mõju.
-->
<!--
<div id = "linkitem" klassi = "kirje">
<XSL-i:Kui katse = "stringi pikkus($SafeImageUrl) != 0 ">
<div klassi = "pildi ala vasakule">
<href = "{$SafeLinkUrl}" Target = "{$LinkTarget}">
<img klassi = "pildi-kindla laiusega" src = "{$SafeImageUrl}" alt = "{@ImageUrlAltText}"/>
</a>
</DIV>
</XSL-i:Kui>
<div klassi = "Lingiüksust">
<XSL-i:kõne-Mall Name="OuterTemplate.CallPresenceStatusIconTemplate"/>
<href = "{$SafeLinkUrl}" Target = "{$LinkTarget}" pealkiri = "{@LinkToolTip}">
<XSL-i:väärtuse kohta märkige = "$DisXSL-iyTitle" />
</a>
<div klassi = "kirjeldus">
<XSL-i:väärtust, select="@Description" />
</DIV>
</DIV>
</DIV>
-->
</TR>
<!--
Paisata sulgemine tabeli silt. Kui me ei ole viimases row,
see jääb tühjaks.
-->
<XSL-i:väärtuse kohta Valige="$tableEnd" Keela väljund põgenedes="Jah"/>
</XSL-i:Mall>
<XSL-i:Mall Nimi="formatcurrency">
<XSL-i:Param Nimi="väärtus" Valige="0" />
<XSL-i:väärtuse kohta Valige='Vorminda numbrit($väärtus, "$DDD,DDD,DDD.DD", "Personal")' />
</XSL-i:Mall>
|