Pārskats un mērķi
No kastes, SŪNA’ Satura vaicājuma Web daļu (CQWP) tās rezultāti parāda saraksta formātā, līdzīgi kā meklēšanas rezultāti. Tas ir arī iespējamos rezultātus attēlot režģa formātā (ti. HTML tabulas formātā). Režģa formāti ir labāk dažos apstākļos. Kā sasniegt šajā sakarā, šajā rakstā es aprakstīt.
Biznesa scenāriju
Ir strādājuši ar klientu par uzņēmuma MOSS izvēršana. Mēs esam izstrādājuši savu taksonomiju, tāda, ka projektu hierarhijā pirmās klases pilsoņi un ir savas augstākā līmeņa vietnes. Projektu vadītāji uztur vienīgo sarakstu projekta kopsavilkuma informācija, piemēram, virsrakstu, Budžets, paredzamo izpildes datumu, Atlikušie budžeta un citas kopsavilkuma tipa laukiem. Ar "Vienīgajos" Es domāju, pielāgots SharePoint saraksts garantē satur tikai vienu vienumu. Vienkāršoti, tas izskatās šādi:
Tehniskā pieeja ir daudz tādas pašas, kā aprakstīts šeit (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). CQWP XSL transformāciju izmanto, lai ģenerētu HTML pārlūku, lai atveidotu.
Es vienmēr iztēloties rezultāts pirms iegremdēšanās XSL, jo XSL ir murgs. Te ir mans vēlamais rezultāts:
HTML, piemēram, tas rada, kā rezultātā:
|
<HTML>
<organizācija>
<centrs>
<tabula apmale= 1>
<!-- Uzlīmes->
<TR BGColor= blue>
<TD><fontu krāsu= white><b>Projekta nosaukums</b></fontu></TD>
<TD Līdzināt= pa labi><fontu krāsu= white><b>Pabeigtu datumu</b></fontu></TD>
<TD Līdzināt= pa labi><fontu krāsu= white><b>Budžets</b></fontu></TD>
<TD Līdzināt= pa labi><fontu krāsu= white><b>Faktisko izdevumu</b></fontu></TD>
<TD><fontu krāsu= white><b>Vispārējo statusu</b></fontu></TD>
</TR>
<TR>
<TD>Vadu datorklase.</TD>
<TD Līdzināt= pa labi>02/01/08</TD>
<TD Līdzināt= pa labi>22,500.00</TD>
<TD Līdzināt= pa labi>19,000.00</TD>
<TD>Notiek</TD>
</TR>
<TR>
<TD>Noteikums serverus SQL Upgrade</TD>
<TD Līdzināt= pa labi>04/01/08</TD>
<TD Līdzināt= pa labi>7,500.00</TD>
<TD Līdzināt= pa labi>0.00</TD>
<TD>Plānots</TD>
</TR>
</tabula>
</centrs>
</organizācija>
</HTML>
|
Pieeja
Izpildiet šos norādījumus, lai izveidotu režģi:
- Noteikt tīkla sastāvdaļas (rindas/kolonnas).
- Noteikt un izveidot nepieciešamo vietnes kolonnām.
- Izveidot vietnes apakš projektiem un Vienīgajos saraksti.
- Lai web lapai pievienotu CQWP un konfigurēt tā, lai meklētu savus sarakstus.
- Modificēt XML CQWP savākt papildu kolonnas.
- Modificēt, lai XSL ģenerētu tabula.
Es esmu gatavojas koncentrēties uz numuru seši. Skaitļi pa četriem ir taisni uz priekšu un kaut ko, kas jau ir izdarījis jebkurš lietotājs, CQWP. Numuru pieci ir labi dokumentēta, citi, ieskaitot šo izsmeļošs ekrāna nošauti kravu raksts no MSDN šeit (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) un Heather Solomona blog šeit (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).
Uzgriežņus un bultskrūves
Uzsākt un īstenot soļus viens līdz pieci saskaņā ar MSDN dokumentācijai un Heather Solomona pants.
Šajā brīdī, esat pievienojis savu CQWP lapas un jums ir jūsu <CommonViewFields> konfigurēts pēc nepieciešamības.
Šādas parastās darbības, Es varu saņemt šo starpposma rezultāti:
1. Izveidot satura tipu, templatized pielāgota saraksta satura tipam un divas vietas. Šeit ir satura tips:
Šeit ir vietnes struktūra:
2. Pievienot CQWP pēc tam, kad manu projektu apakšvietnes un Vienīgajos projekta kopsavilkuma sarakstu izveidošanu:
3. Pievienot visu papildu informāciju, ko vēlaties, izmantojot <CommonViewFields>:
<īpašuma vārds="CommonViewFields" tips="virkne">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</īpašuma>
Ņemiet vērā, ka man vajadzēja parūpēties par rekvizītu laukiem vienā rindā vai nedarbosies (CQWP taču man pateiktu, ka vaicājums neatgrieza nekādus vienumus).
4. Šajā brīdī, mēs esam gatavi iet tālāk MSDN raksts un uzsist pa Heather Solomona pants. Sekot viņas darbības sākuma solis tuvāk #5 lai izveidotu pielāgotu / unghosted versija ItemStyle.xsl. I sekot Hetere ir konsultācijas, līdz ar soli 11 un saņemt šos starpposma rezultāti:
4.1: Šādi nosaukt savu XSL veidnes:
<XSL:veidnes nosaukums = "Grid" atbilstu = "rindu[@Style = "Grid"]" Mode = "itemstyle">
Es arī nedaudz mainīt viņu ieteica <XSL:par katru …> pievienojot <br /> tagam, lai nodrošinātu tīrāku listing:
<XSL:par katru atlasiet="@*">
P:<XSL:vērtību no atlasiet="vārds()" /><br/>
</XSL:par katru>
4.2: Modificēt web daļu, dodieties uz izskatu un izvēlēties manu "Grid" stils:
Izmaiņas tiek ieviestas, un šeit ir rezultāts:
Mēs varam redzēt no iepriekš mēs gribam laukus (Projekta nosaukums, izdevumi, statuss, uc) ir pieejamas mums izmantot, kad mēs izstarot HTML. Ne tikai to, ka, bet mēs redzam vārdus, kas ir atsauces slejās XSL. Piemēram, mēs projekta statuss atsaucē kā "Project_x005F_x0020_Name".
Šajā brīdī, mums atkāpties no Hetere ir blog un no šīm milžu pleciem, Es varu pievienot savu mazumiņu.
ContentQueryMain.xsl
PIEZĪME: Veicot izmaiņas gan ContentQueryMain.xsl, kā arī ItemStyle.xsl, jums nepieciešams pārbaudīt šos failus atpakaļ pirms jūs redzat jūsu izmaiņu efektu.
Grid veidošanas nolūkos, SŪNA izmanto divas dažādas XSL failos esošo rezultātu mēs redzam no CQWP. Lai ģenerētu izvades iepriekšējo bits, mēs mainīt ItemStyle.xsl. MOSS, faktiski izmanto citu XSL failu, ContentQueryMain.xsl, lai kopā ar ItemStyle.xsl, lai radītu savu HTML. Kā norāda tās nosaukums, ContentQueryMain.xsl ir galvenais"" XSL, kas kontrolē kopējo plūsmu tulkošanas. Tas atkārtojas pa visu atrasto vienumu un nodod tos pa vienam, lai veidnes ItemStyle.xsl. Mēs ņemšu mainīt ItemStyle.xsl radīt atvērtu <tabula> pirms izstaro pirmās rindas datus un beigu tagu <tabula> tagu pēc emisijas pēdējās rindas. Lai to paveiktu, ContentQueryMain.xsl modificēta divi parametri nodot mūsu "režģis" veidnes ItemStyle.xsl, "pēdējā rindā" un "pašreizējā rinda". ItemStyle.xsl izmanto tie nosacīti izdala vajadzīgos tagus.
Izmantojot Heather Solomona tehnika, mēs atrast ContentQueryMain.xsl. Tā atrodas tajā pašā vietā kā ItemStyle.xsl. Vajadzētu palīdzēt šajā ekrānuzņēmums:
Mums ir nepieciešams veikt šādas izmaiņas:
- Xsl veidnes modificēšana, "CallItemTemplate" faktiski, kas izsauc mūsu Grid veidnes ItemStyle.xsl. Pāriesim divi parametri Grid veidni tā, ka tas būs dati tai ir nosacīti ģenerēt atvēršana un aizvēršana <tabula> Tags.
- Modificēt citā bitu ContentQueryMain.xsl, kas aicina "CallItemTemplate" to varētu nodot "LastRow" parametrs tāpēc, ka LastRow var nodot mūsu Grid veidni.
Atrastu veidni ar nosaukumu "OuterTemplate.CallItemTemplate" ar virkni identificēta:
<XSL:Veidne: vārds="OuterTemplate.CallItemTemplate">
Šādi aizvietot visu veidni:
|
<XSL:Veidne: vārds="OuterTemplate.CallItemTemplate">
<XSL:param vārds="CurPosition" />
<!--
Pievienot "LastRow" parametrs.
Mēs tikai izmantot to elementu stilu caurlaide, esot "Grid".
-->
<XSL:param vārds="LastRow" />
<XSL:izvēlieties>
<XSL:kad tests="@Style = 'NewsRollUpItem'">
<XSL:lietot veidnes atlasiet="." režīms="itemstyle">
<XSL:ar param vārds="EditMode" atlasiet="$cbq_iseditmode" />
</XSL:lietot veidnes>
</XSL:kad>
<XSL:kad tests="@Style = 'NewsBigItem'">
<XSL:lietot veidnes atlasiet="." režīms="itemstyle">
<XSL:ar param vārds="CurPos" atlasiet="$CurPosition" />
</XSL:lietot veidnes>
</XSL:kad>
<XSL:kad tests="@Style = 'NewsCategoryItem'">
<XSL:lietot veidnes atlasiet="." režīms="itemstyle">
<XSL:ar param vārds="CurPos" atlasiet="$CurPosition" />
</XSL:lietot veidnes>
</XSL:kad>
<!--
Pašreizējo stāvokli un lastrow nodot Grid itemstyle.xsl veidni.
ItemStyle.xsl, kas izmantos emitēt atklātā un aizvēršana <tabula> Tags.
-->
<XSL:kad tests="@Style = "Grid"">
<XSL:lietot veidnes atlasiet="." režīms="itemstyle">
<XSL:ar param vārds="CurPos" atlasiet="$CurPosition" />
<XSL:ar param vārds="Pēdējais" atlasiet="$LastRow" />
</XSL:lietot veidnes>
</XSL:kad>
<XSL:Pretējā gadījumā>
<XSL:lietot veidnes atlasiet="." režīms="itemstyle">
</XSL:lietot veidnes>
</XSL:Pretējā gadījumā>
</XSL:izvēlieties>
</XSL:Veidne:>
|
Piezīmes apraksta izmaiņas mērķis.
protams, "OuterTemplate.CallItemTemplate" sevi sauc no citas veidnes. Atrodiet šo veidni, meklējot šo teksta virkni:
<XSL:Veidne: vārds="OuterTemplate.Body">
Ritinātu instrukcijas OuterTemplate.Body un ievietojiet parametru LastRow, šādi (parādītas kā komentāri kursīvā):
<XSL:zvanu veidni vārds="OuterTemplate.CallItemTemplate">
<XSL:ar param vārds="CurPosition" atlasiet="$CurPosition" />
<!-- LastRow parametra ievietošana. -->
<XSL:ar param vārds="LastRow" atlasiet="$LastRow"/>
</XSL:zvanu veidni>
Pēc visa šī, mums beidzot ir iestatīts pareizi, tāpēc ka mūsu ItemStyle.xsl var izstarot lietas <tabula> tagi ir īstajā vietā.
ItemStyle.Xsl
PIEZĪME: Atkal, Pārbaudiet ItemStyle.xsl pēc tam, kad veicat jebkādas izmaiņas, lai varētu redzēt šo izmaiņu ietekme.
Mums te ir divi uzdevumi:
- Aizstāt visu režģa veidni. Jūs varat kopēt/ielīmēt no apakšas.
- Pievienot dažas mumbo gigants ārpus veidnes definīcija, kas ļauj "formatcurrency" veidni, lai tā strādātu. (Jūs varat pateikt, ka man ir niecīga rokturi XSL).
Pirmais, ItemStyle.xsl augšdaļā, pievienotu šo līniju:
<!-- Dažas mumbo gigants, kas dod mums iespēju parādīt ASV. valūta. -->
<XSL:decimāldaļu formātā vārds="personāls" ciparu="D" />
<XSL:Veidne: vārds="Noklusējuma" atbilst="*" režīms="itemstyle">
Ņemiet vērā, ka es pievieno tieši pirms <XSL:veidnes nosaukums = "Default" …> definīcijas.
Nākamo, doties atpakaļ uz mūsu Grid veidni. Aizstāt visu režģa veidni ar kodu zemāk. Tas ir pamatīgi komentēja, bet Nevilcinieties nosūtīt pa e-pastu man vai atstāt komentārus par manu blogu, ja jums ir jautājumi.
|
<XSL:Veidne: vārds="Režģis" atbilst="Rindu[@Style = "Grid"]" režīms="itemstyle">
<!--
ContentMain.xsl iet CurPos un pēdējā.
Mēs izmantot šo iespēju nosacīti izdala atvērt un aizvērt <tabula> Tags.
-->
<XSL:param vārds="CurPos" />
<XSL:param vārds="Pēdējais" />
<!-- Šie mainīgie ir nepārveidota no standarta ItemStyle.xsl -->
<XSL:mainīgais vārds="SafeImageUrl">
<XSL:zvanu veidni vārds="OuterTemplate.GetSafeStaticUrl">
<XSL:ar param vārds="UrlColumnName" atlasiet="'ImageUrl'"/>
</XSL:zvanu veidni>
</XSL:mainīgais>
<XSL:mainīgais vārds="SafeLinkUrl">
<XSL:zvanu veidni vārds="OuterTemplate.GetSafeLink">
<XSL:ar param vārds="UrlColumnName" atlasiet="'LinkUrl'"/>
</XSL:zvanu veidni>
</XSL:mainīgais>
<XSL:mainīgais vārds="DisplayTitle">
<XSL:zvanu veidni vārds="OuterTemplate.GetTitle">
<XSL:ar param vārds="Nosaukums" atlasiet="@Title"/>
<XSL:ar param vārds="UrlColumnName" atlasiet="'LinkUrl'"/>
</XSL:zvanu veidni>
</XSL:mainīgais>
<XSL:mainīgais vārds="LinkTarget">
<XSL:Ja tests="@OpenInNewWindow = "True"" >_ blank</XSL:Ja>
</XSL:mainīgais>
<!--
Šeit mēs definētu mainīgo, "tableStart". Tas satur HTML, ko mēs izmantojam, lai noteiktu sākuma tabulā, kā arī kolonnu etiķetēm. Ņemiet vērā, ka, ja CurPos = 1, tā ietver HTML tagu CDATA.
Pretējā gadījumā, tā būs tukša.
TableStart vērtība ir emited, katru reizi, kad tiek saukts ItemStyle, izmantojot ContentQueryMain.xsl.
-->
<XSL:mainīgais vārds="tableStart">
<XSL:Ja tests="$CurPos = 1">
<![CDATA[
<tabulas apmales = 1>
<TR bgcolor = "blue">
<TD><fonta krāsa = "white"><b>Projekta nosaukums</b></fontu></TD>
<Līdzināt TD = "pa labi"><fonta krāsa = "white"><b>Pabeigtu datumu</b></fontu></TD>
<Līdzināt TD = "pa labi"><fonta krāsa = "white"><b>Budžets</b></fontu></TD>
<Līdzināt TD = "pa labi"><fonta krāsa = "white"><b>Faktisko izdevumu</b></fontu></TD>
<TD><fonta krāsa = "white"><b>Vispārējo statusu</b></fontu></TD>
</TR>
]]>
</XSL:Ja>
</XSL:mainīgais>
<!--
Citu mainīgo, tableEnd vienkārši definē noslēguma tabulas tagu.
Ar tableStart, tas vienmēr ir emited. Tas ir iemesls, kāpēc tās vērtība tiek piešķirta nosacīti pamatojas uz to, vai mēs esam nodoti pēdējā rindā, ContentQueryMain.xsl.
-->
<XSL:mainīgais vārds="tableEnd">
<XSL:Ja tests="$CurPos = $Last">
<![CDATA[ </tabula> ]]>
</XSL:Ja>
</XSL:mainīgais>
<!--
Vienmēr izstaro tableStart saturs. Ja tas nav pirmajā rindā mums garām ContentQueryMain.xsl, tad mēs zinām, ka tās vērtība būs tukšs.
Atspējot izvades izbēgt, jo, kad tas tableStart nav tukša, tā ietver faktisko HTML, ka mēs vēlamies, lai sniegtie pārlūku. Ja mums nav pateikt XSL parser, lai atspējotu izvades bēg, tas radīs sīkumi, piemēram "<tabula>" nevis par"<tabula>".
-->
<XSL:vērtību no atlasiet="$tableStart" atspējot izvades bēg="jā"/>
<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:vērtību no atlasiet="@Project_x005F_x0020_Name"/>
</TD>
<TD Līdzināt="tiesības">
<XSL:vērtību no atlasiet="@Project_x005F_x0020_End_x005F_x0020_Date"/>
</TD>
<TD Līdzināt="tiesības">
<XSL:zvanu veidni vārds="FormatCurrency">
<XSL:ar param vārds="vērtība" atlasiet="@Project_x005F_x0020_Budget"></XSL:ar param>
</XSL:zvanu veidni>
</TD>
<TD Līdzināt="tiesības">
<XSL:zvanu veidni vārds="FormatCurrency">
<XSL:ar param vārds="vērtība" atlasiet="@Project_x005F_x0020_Expenses"> </XSL:ar param>
</XSL:zvanu veidni>
</TD>
<TD>
<XSL:vērtību no atlasiet="@Project_x005F_x0020_Status"/>
</TD>
<!--
Visas šīs darbības ir komentēja noskaidrot lietas.
Tomēr, nogādājiet to atpakaļ un stuff to <TD> lai skatītu tā efektu.
-->
<!--
<div id = "linkitem" Class = "postenis">
<XSL:Ja tests "virknes garums =($SafeImageUrl) != "0">
<div class = "attēla apgabala kreisajā">
<href = "{$SafeLinkUrl}" TARGET = "{$LinkTarget}">
<IMG class = "attēlu-fiksēta platuma" src = "{$SafeImageUrl}" ALT = "{@ImageUrlAltText}"/>
</a>
</DIV>
</XSL:Ja>
<div class = "saites vienums">
<XSL:zvanu veidni name="OuterTemplate.CallPresenceStatusIconTemplate"/>
<href = "{$SafeLinkUrl}" TARGET = "{$LinkTarget}" nosaukums = "{@LinkToolTip}">
<XSL:vērtību, atlasiet = "$DisXSLyTitle" />
</a>
<div class = "apraksts">
<XSL:vērtību, select="@Description" />
</DIV>
</DIV>
</DIV>
-->
</TR>
<!--
Izstarot noslēguma tabulas tagu. Ja mēs neesam pēdējā rindā,
tas būs tukšs.
-->
<XSL:vērtību no atlasiet="$tableEnd" atspējot izvades bēg="jā"/>
</XSL:Veidne:>
<XSL:Veidne: vārds="FormatCurrency">
<XSL:param vārds="vērtība" atlasiet="0" />
<XSL:vērtību no atlasiet='skaitļa formatēšana($vērtība, "$DDD,DDD,DDD.DD", "nodrošinājums ar personālu")' />
</XSL:Veidne:>
|