Trosolwg ac Amcan
Allan o'r blwch, MOSS’ Cynnwys Ymholiad Rhan We (CQWP) yn dangos ei chanlyniadau ar ffurf rhestr, tebyg i ganlyniadau chwilio. Mae hefyd yn bosibl i arddangos y canlyniadau ar ffurf grid (h.y. Ffurf tabl HTML). Fformatau grid yn well mewn rhai amgylchiadau. Disgrifiaf sut i gyflawni effaith honno yn yr erthygl hon.
Senario Busnes
Yr wyf wedi gweithio gyda chleient ar gyflwyno'r MOSS menter gyfan. Rydym wedi cynllunio'r eu tacsonomeg megis y prosiectau yn ddinasyddion dosbarth cyntaf yn yr hierarchaeth ac wedi eu hunain safle lefel uchaf. Mae rheolwyr prosiect yn cynnal rhestr singleton o wybodaeth Crynodeb o'r prosiect, megis teitl, gyllideb, dyddiad cwblhau disgwyliedig, gyllideb sy'n weddill a meysydd eraill math Crynodeb. Gan "singleton" Yr wyf yn golygu rhestr SharePoint bersonol yn cynnwys dim ond un eitem yn sicr. Egwyddorion, mae'n edrych fel hyn:
Mae'r dull technegol yn llawer yr un fath fel y disgrifir yma (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). Mae y CQWP yn defnyddio drawsnewid XSL i allyrru HTML ar gyfer y porwr i rendr.
Yr wyf bob amser yn synio am y canlyniad cyn plymio i mewn y XSL am XSL yn hunllef. Dyma fy canlyniad a ddymunir:
HTML fel hyn yn cynhyrchu sy'n arwain:
|
<html>
<corff>
<canolfan>
<tabl ffin= 1>
<!-- Labeli ->
<tr bgcolor= Glas>
<TD><ffont lliw= Gwyn><b>Enw'r Prosiect</b></ffont></TD>
<TD alinio= Cywir><ffont lliw= Gwyn><b>Dyddiad Cwblhau</b></ffont></TD>
<TD alinio= Cywir><ffont lliw= Gwyn><b>Cyllideb</b></ffont></TD>
<TD alinio= Cywir><ffont lliw= Gwyn><b>Treuliau Gwirioneddol</b></ffont></TD>
<TD><ffont lliw= Gwyn><b>Statws y cyfan</b></ffont></TD>
</tr>
<tr>
<TD>Ystafell gyfrifiaduron Ail-wifren.</TD>
<TD alinio= Cywir>02/01/08</TD>
<TD alinio= Cywir>22,500.00</TD>
<TD alinio= Cywir>19,000.00</TD>
<TD>Ar y Gweill</TD>
</tr>
<tr>
<TD>Gweinyddion darpariaeth ar gyfer SQL Uwchraddio</TD>
<TD alinio= Cywir>04/01/08</TD>
<TD alinio= Cywir>7,500.00</TD>
<TD alinio= Cywir>0.00</TD>
<TD>Gynlluniwyd</TD>
</tr>
</tabl>
</canolfan>
</corff>
</html>
|
Dull
Dilynwch y camau hyn i greu grid:
- Adnabod y cydrannau y grid (rhesi / colofnau).
- Diffinio a chreu colofnau safle angenrheidiol.
- Creu is-safleoedd ar gyfer y prosiectau a rhestrau Singleton.
- Ychwanegwch y CQWP i dudalen we a ffurfweddu i chwilio am eich rhestrau.
- Addasu'r XML y CQWP i gasglu'r colofnau ychwanegol.
- Addasu'r XSL i gynhyrchu tabl.
Yr wyf am ganolbwyntio ar Rhif chwech. Niferoedd un drwy'r pedwar yn syth ymlaen ac yn rhywbeth y mae unrhyw ddefnyddiwr CQWP yn cael ei wneud eisoes. Mae nifer pump wedi bod yn hysbys gan eraill gan gynnwys erthygl llwythog gynhwysfawr hon sgrin lun o MSDN yma (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) a blog Heather Solomon yma (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).
Cnau a Bolltau
Dechrau a gweithredu camau un drwy bum yn unol â'r dogfennau MSDN ac erthygl Heather Solomon.
Ar y pwynt hwn, ydych chi wedi ychwanegu eich CQWP at y dudalen a ydych wedi eich <CommonViewFields> ffurfweddu fel y bo angen.
Yn dilyn y camau arferol, Rwy'n cael y canlyniadau canolradd:
1. Creu math o gynnwys, rhestr bersonol templatized ar gyfer y math o gynnwys a dau safle. Yma yn y math o gynnwys:
Dyma strwythur y safle:
2. Ychwanegwch y CQWP ar ôl creu fy subsites prosiect a rhestrau crynodeb prosiect singleton:
3. Ychwanegwch yr holl wybodaeth ychwanegol rwyf am drwy'r <CommonViewFields>:
<eiddo Enw="CommonViewFields" Math="llinyn">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</eiddo>
Sylwer bod rhaid i mi gadw'r holl feysydd eiddo ar un llinell neu na fyddai'n gweithio (Byddai CQWP dweud wrthyf fod yr ymholiad dychwelyd unrhyw eitemau).
4. Ar y pwynt hwn, Rydym yn barod i symud y tu hwnt i'r erthygl MSDN a flip ar dros i Heather Solomon erthygl. Yn dilyn ei camau dechrau ger cam #5 i greu customized / Fersiwn unghosted o ItemStyle.xsl. Rwy'n dilyn cyngor y grug, i fyny drwy'r cam 11 a chael y canlyniadau canolradd:
4.1: Enwch fy templed XSL fel a ganlyn:
<XSL:Enw'r templed = "Grid" cyfatebol = "rhes[@Style = 'Grid']" modd = "itemstyle">
Yr wyf hefyd ychydig yn addasu awgrymodd ei <XSL:am-bob …> drwy ychwanegu <br /> tagio i ddarparu rhestr glanach:
<XSL:am-bob dewis="@ *">
P:<XSL:gwerth o dewis="Enw()" /><br/>
</XSL:am-bob>
4.2: I addasu y we rhan, fynd i ymddangosiad a dewis fy "Grid" arddull:
Gwneud cais y newid a dyma'r canlyniad:
Gallwn weld o'r uchod fod y meysydd yr ydym am (Enw'r prosiect, draul, statws, ac ati) ar gael i ni ei ddefnyddio pan ydym yn allyrru y HTML. Nid yn unig hynny, ond gwelwn enwau y rhaid inni gyfeirio at colofnau hynny yn y XSL. Er enghraifft,, Rydym yn cyfeirio at statws prosiect fel "Project_x005F_x0020_Name".
Ar y pwynt hwn, rydym yn gwyro oddi blog Heather ac o'r ysgwyddau cewri hyn, Hoffwn ychwanegu fy rhan hun.
ContentQueryMain.xsl
NODYN: Wrth wneud newidiadau i ContentQueryMain.xsl yn ogystal â ItemStyle.xsl, mae angen i chi wirio ffeiliau hynny yn ôl mewn cyn i chi weld yr effaith ar eich newidiadau.
At ddibenion gwneud grid, Mae MOSS yn defnyddio dwy ffeil XSL wahanol i gynhyrchu canlyniadau a gwelwn o'r CQWP. I gynhyrchu ychydig blaenorol o allbwn, yr ydym yn addasu ItemStyle.xsl. Mae MOSS mewn gwirionedd yn defnyddio ffeil XSL arall, ContentQueryMain.xsl i ar y cyd â ItemStyle.xsl i gynhyrchu ei HTML. Fel y mae ei enw yn ei awgrymu, ContentQueryMain.xsl yn y "Prif" XSL rheoli llif cyffredinol cyfieithu. Mae'n ailadrodd drwy holl eitemau a geir ac yn eu pasio gan un templedi yn ItemStyle.xsl. Byddwn yn addasu'r ItemStyle.xsl i gynhyrchu agored <tabl> tag cyn allyrru y rhes gyntaf o ddata a cau <tabl> tag ar ôl y rhes olaf allyrru. I gyflawni hyn, Mae ContentQueryMain.xsl yn cael ei haddasu i basio paramedrau dau o'n "grid" templed yn ItemStyle.xsl, "rhes olaf" a "rhes presennol". Mae ItemStyle.xsl yn defnyddio'r rhain i allyrru Tagiau angenrheidiol yn amodol.
Gan ddefnyddio techneg Heather Solomon, dod o hyd ContentQueryMain.xsl. Mae wedi ei leoli yn yr un lle â ItemStyle.xsl. Dylai hwn o'r sgrin lun yn helpu:
Mae angen i ni wneud y newidiadau canlynol:
- Addasu templed xsl, "CallItemTemplate" Mae hynny mewn gwirionedd yn rhyw ein templed Grid yn ItemStyle.xsl. Byddwn yn trosglwyddo paramedrau dau templed Grid fel y bydd y data y mae ei angen i gynhyrchu agor a chau yn amodol <tabl> tagiau.
- Addasu ychydig arall o ContentQueryMain.xsl a "CallItemTemplate yn galw" i basio ei "LastRow" paramedr fel y gellir LastRow ei drosglwyddo i ein templed Grid.
Lleoli y templed o'r enw "OuterTemplate.CallItemTemplate" nodwyd gan y llinyn:
<XSL:templed Enw="OuterTemplate.CallItemTemplate">
Amnewid y templed gyfan fel a ganlyn:
|
<XSL:templed Enw="OuterTemplate.CallItemTemplate">
<XSL:param Enw="CurPosition" />
<!--
Ychwanegu "LastRow" paramedr.
Dim ond inni ei ddefnyddio pan fydd y tocyn arddull eitem yn "Grid".
-->
<XSL:param Enw="LastRow" />
<XSL:dewis>
<XSL:pan prawf="@ Arddull = 'NewsRollUpItem'">
<XSL:yn gymwys-templedi dewis="." modd="itemstyle">
<XSL:gyda-param Enw="EditMode" dewis="$cbq_iseditmode" />
</XSL:yn gymwys-templedi>
</XSL:pan>
<XSL:pan prawf="@ Arddull = 'NewsBigItem'">
<XSL:yn gymwys-templedi dewis="." modd="itemstyle">
<XSL:gyda-param Enw="CurPos" dewis="$CurPosition" />
</XSL:yn gymwys-templedi>
</XSL:pan>
<XSL:pan prawf="@ Arddull = 'NewsCategoryItem'">
<XSL:yn gymwys-templedi dewis="." modd="itemstyle">
<XSL:gyda-param Enw="CurPos" dewis="$CurPosition" />
</XSL:yn gymwys-templedi>
</XSL:pan>
<!--
Ewch heibio sefyllfa bresennol a lastrow y templed itemstyle.xsl Grid.
Bydd ItemStyle.xsl defnyddio hynny i allyrru yr awyr agored a chau <tabl> tagiau.
-->
<XSL:pan prawf="@ Arddull = 'Grid'">
<XSL:yn gymwys-templedi dewis="." modd="itemstyle">
<XSL:gyda-param Enw="CurPos" dewis="$CurPosition" />
<XSL:gyda-param Enw="Diwethaf" dewis="$LastRow" />
</XSL:yn gymwys-templedi>
</XSL:pan>
<XSL:fel arall>
<XSL:yn gymwys-templedi dewis="." modd="itemstyle">
</XSL:yn gymwys-templedi>
</XSL:fel arall>
</XSL:dewis>
</XSL:templed>
|
Mae'r sylwadau yn disgrifio diben y newidiadau.
Wrth gwrs, "OuterTemplate.CallItemTemplate" Gelwir ei hun o'r templed arall. Lleoli templed hwnnw gan chwilio am y llinyn testun hwn:
<XSL:templed Enw="OuterTemplate.Body">
Sgroliwch drwy'r cyfarwyddiadau yn OuterTemplate.Body a rhowch y paramedr LastRow fel a ganlyn (a ddangosir fel sylw mewn llythrennau italig):
<XSL:galw-templed Enw="OuterTemplate.CallItemTemplate">
<XSL:gyda-param Enw="CurPosition" dewis="$CurPosition" />
<!-- Rhowch y paramedr LastRow. -->
<XSL:gyda-param Enw="LastRow" dewis="$LastRow"/>
</XSL:galw-templed>
Ar ôl hyn i gyd, rydym o'r diwedd wedi pethau osod yn iawn fel y gall ein ItemStyle.xsl allyrru <tabl> tagiau yn y lle iawn.
ItemStyle.Xsl
NODYN: Unwaith eto,, gwirio yn ItemStyle.xsl ar ôl gwneud unrhyw newidiadau er mwyn i chi weld effaith y newidiadau hynny.
Mae gennym ddwy dasg yma:
- Disodli'r templed Grid cyfan. Chi Gellir copïo/gludo o'r rhestr isod.
- Ychwanegu rhai mumbo jumbo y tu allan i'r diffiniad templed sy'n galluogi "formatcurrency" templed i weithio. (Gallwch ddweud fy mod wedi cael trefn denau ar XSL).
Cyntaf, agos at frig y ItemStyle.xsl, ychwanegwch y llinell hon:
<!-- Mae rhai mumbo jumbo sy'n ein galluogi i arddangos U.S. arian cyfred. -->
<XSL:degol-fformat Enw="staff" digid="D" />
<XSL:templed Enw="Default" yn cyd-fynd="*" modd="itemstyle">
Noder fy mod yn ychwanegu yn uniongyrchol cyn y <XSL:Enw'r templed = "diofyn" …> diffiniad.
Nesaf, mynd yn ôl at ein templed Grid. Y templed Grid cyfan yn ei le y cod isod. Yn ei sylwadau yn drylwyr, ond mae croeso i chi e-bost ataf neu adael sylwadau ar fy blog os oes gennych gwestiynau.
|
<XSL:templed Enw="Grid" yn cyd-fynd="Row[@ Arddull = 'Grid']" modd="itemstyle">
<!--
ContentMain.xsl pasio CurPos a Olaf.
Rydym yn defnyddio'r rhain i allyrru yr awyr agored a chau amodol <tabl> tagiau.
-->
<XSL:param Enw="CurPos" />
<XSL:param Enw="Diwethaf" />
<!-- Y newidynnau canlynol yn cael eu heb eu haddasu o'r ItemStyle.xsl safonol -->
<XSL:amrywiol Enw="SafeImageUrl">
<XSL:galw-templed Enw="OuterTemplate.GetSafeStaticUrl">
<XSL:gyda-param Enw="UrlColumnName" dewis="'ImageUrl'"/>
</XSL:galw-templed>
</XSL:amrywiol>
<XSL:amrywiol Enw="SafeLinkUrl">
<XSL:galw-templed Enw="OuterTemplate.GetSafeLink">
<XSL:gyda-param Enw="UrlColumnName" dewis="'LinkUrl'"/>
</XSL:galw-templed>
</XSL:amrywiol>
<XSL:amrywiol Enw="DisplayTitle">
<XSL:galw-templed Enw="OuterTemplate.GetTitle">
<XSL:gyda-param Enw="Teitl" dewis="@ Teitl"/>
<XSL:gyda-param Enw="UrlColumnName" dewis="'LinkUrl'"/>
</XSL:galw-templed>
</XSL:amrywiol>
<XSL:amrywiol Enw="LinkTarget">
<XSL:os prawf="@ OpenInNewWindow = 'Gwir'" >_blank</XSL:os>
</XSL:amrywiol>
<!--
Yma rydym yn diffinio newidyn, "tableStart". Mae hwn yn cynnwys HTML
. Nodi os CurPos = 1, mae'n cynnwys y HTML mewn tag CDATA.
Fel arall,, bydd yn wag.
Mae gwerth tableStart yn emited cael ei alw'n bob ItemStyle amser drwy
.
-->
<XSL:amrywiol Enw="tableStart">
<XSL:os prawf="$CurPos = 1">
<![CDATA[
<border tabl = 1>
<tr bgcolor = "glas">
<TD><lliw ffont = "Gwyn"><b>Enw'r Prosiect</b></ffont></TD>
<alinio Td = "hawl"><lliw ffont = "Gwyn"><b>Dyddiad Cwblhau</b></ffont></TD>
<alinio Td = "hawl"><lliw ffont = "Gwyn"><b>Cyllideb</b></ffont></TD>
<alinio Td = "hawl"><lliw ffont = "Gwyn"><b>Treuliau Gwirioneddol</b></ffont></TD>
<TD><lliw ffont = "Gwyn"><b>Statws y cyfan</b></ffont></TD>
</tr>
]]>
</XSL:os>
</XSL:amrywiol>
<!--
Newidyn arall, tableEnd syml diffinio'r tag tabl cau.
Fel gyda tableStart, mae'n emited bob amser. Dyma pam y mae ei werth yn
.
-->
<XSL:amrywiol Enw="tableEnd">
<XSL:os prawf="$CurPos = $ ddiwethaf">
<![CDATA[ </tabl> ]]>
</XSL:os>
</XSL:amrywiol>
<!--
Bob amser yn allyrru cynnwys tableStart. Os nad yw hyn yw'r cyntaf
, Yna, rydym yn gwybod ei werth
.
Analluoga allbwn dianc oherwydd nid pan tableStart yn wag, ei
. Os
, Bydd yn cynhyrchu pethau fel"<tabl>" yn lle o"<tabl>".
-->
<XSL:gwerth o dewis="$tableStart" analluoga-allbwn-dianc="ie"/>
<tr>
<!--
P:Project_x005F_x0020_Name
:Project_x005F_x0020_End_x005F_x0020_Date
:Project_x005F_x0020_Budget
:Project_x005F_x0020_Expenses
:Project_x005F_x0020_Status
-->
<TD>
<XSL:gwerth o dewis="@ Project_x005F_x0020_Name"/>
</TD>
<TD alinio="iawn">
<XSL:gwerth o dewis="@ Project_x005F_x0020_End_x005F_x0020_Date"/>
</TD>
<TD alinio="iawn">
<XSL:galw-templed Enw="formatcurrency">
<XSL:gyda-param Enw="gwerth" dewis="@ Project_x005F_x0020_Budget"></XSL:gyda-param>
</XSL:galw-templed>
</TD>
<TD alinio="iawn">
<XSL:galw-templed Enw="formatcurrency">
<XSL:gyda-param Enw="gwerth" dewis="@ Project_x005F_x0020_Expenses"> </XSL:gyda-param>
</XSL:galw-templed>
</TD>
<TD>
<XSL:gwerth o dewis="@ Project_x005F_x0020_Status"/>
</TD>
<!--
Mae pob un o'r canlynol yn sylwadau i egluro pethau.
Fodd bynnag,, dod ag ef yn ôl a phethau i mewn i <TD> i weld ei
.
-->
<!--
<DIV id = "linkitem" dosbarth = "eitem">
<XSL:Os oes prawf = "llinyn-darn($SafeImageUrl) != 0">
<dosbarth DIV = "delwedd ardal chwith">
<href = "{$SafeLinkUrl}" targed = "{$LinkTarget}">
<dosbarth IMG = "delwedd-lled" SRC = "{$SafeImageUrl}" TTA = "{@ ImageUrlAltText}"/>
</1>
</div>
</XSL:os>
<dosbarth DIV = "cyswllt-eitem">
<XSL:galw-templed name="OuterTemplate.CallPresenceStatusIconTemplate"/>
<href = "{$SafeLinkUrl}" targed = "{$LinkTarget}" teitl = "{@ LinkToolTip}">
<XSL:gwerth o ddewis = "$DisplayTitle" />
</1>
<dosbarth DIV = "description">
<XSL:gwerth o ôl select="@Description" />
</div>
</div>
</div>
-->
</tr>
<!--
Gollwng y tag tabl cau. Os nad ydym ar y rhes olaf,
bydd hyn yn wag.
-->
<XSL:gwerth o dewis="$tableEnd" analluoga-allbwn-dianc="ie"/>
</XSL:templed>
<XSL:templed Enw="formatcurrency">
<XSL:param Enw="gwerth" dewis="0" />
<XSL:gwerth o dewis='fformat rhif($gwerth, "$DDD,DDD,D. DD", "staff")' />
</XSL:templed>
|