Forbhreathnú agus Cuspóir
As an bosca, CAONAIGH’ Cuid Web Content Iarratas (CQWP) Taispeánann na torthaí i bhformáid liosta, similar to search results. It is also possible to display the results in a grid format (i.e. Bhformáid tábla HTML). Grid formats are better in some circumstances. I describe how to achieve that effect in this article.
Cás Gnó
I have worked with a client on an enterprise-wide MOSS rollout. We have designed their taxonomy such that projects are first class citizens in the hierarchy and have their own top level site. Project managers maintain a singleton list of project summary information, cosúil le teideal, buiséad, dáta críochnaithe ag súil, remaining budget and other summary type fields. By "singleton" I mean a custom SharePoint list guaranteed to contain only one item. Simplistically, tá sé cosúil leis an:
Is é an cur chuige teicniúil mórán mar an gcéanna a bhfuil cur síos anseo (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). The CQWP uses an XSL transform to emit HTML for the browser to render.
I always envision the result before diving into the XSL because XSL is a nightmare. Here’s my desired result:
Gineann HTML mar seo an toradh sin a:
|
<html>
<comhlacht>
<lár>
<tábla teorann= 1>
<!-- Lipéid ->
<tr bgcolor= Gorm>
<td><Is iad dath= Bán><b>Ainm an Tionscadail</b></Is iad></td>
<td ailíniúCeart><Is iad dath= Bán><b>Comhlánaigh Dáta</b></Is iad></td>
<td ailíniúCeart><Is iad dath= Bán><b>Buiséad</b></Is iad></td>
<td ailíniúCeart><Is iad dath= Bán><b>Costas Iarbhír</b></Is iad></td>
<td><Is iad dath= Bán><b>Stádas Foriomlán</b></Is iad></td>
</tr>
<tr>
<td>Seomra ríomhaireachta Re-sreang.</td>
<td ailíniúCeart>02/01/08</td>
<td ailíniúCeart>22,500.00</td>
<td ailíniúCeart>19,000.00</td>
<td>I Dul Chun Cinn</td>
</tr>
<tr>
<td>Freastalaithe Soláthar le haghaidh Uasghrádú SQL</td>
<td ailíniúCeart>04/01/08</td>
<td ailíniúCeart>7,500.00</td>
<td ailíniúCeart>0.00</td>
<td>Pleanáilte</td>
</tr>
</tábla>
</lár>
</comhlacht>
</html>
|
Cur Chuige
Lean na céimeanna seo a chruthú ar an eangach:
- Sainaithin na comhpháirteanna an eangach (rónna / colúin).
- Shainiú agus a chruthú colúin suíomh is gá.
- Cruthaigh suímh fho do na tionscadail agus liostaí singleton.
- An CQWP a chur le leathanach gréasáin agus é a chumrú chun cuardach a dhéanamh do do liostaí.
- Athraigh an CQWP ar XML a bhailiú suas na colúin bhreise a.
- Athraigh an XSL a ghiniúint tábla.
I’m going to concentrate on number six. Numbers one through four are straight-forward and something that any CQWP user has already done. Number five has been well-documented by others including this exhaustive screen-shot laden article from MSDN anseo (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) agus blog Heather Sholamón ar anseo (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).
Cnónna Agus Bolts
Tosaigh agus a chur i céimeanna amháin trí chúig de réir an doiciméadú MSDN agus airteagal Heather Sholamón ar.
Ag an bpointe seo, Chuir tú do CQWP go dtí an leathanach agus tá tú do <CommonViewFields> cumraithe mar is gá.
Tar éis na céimeanna is gnách, Faighim na torthaí idirmheánacha:
1. Cruthaigh cineál ábhar, a templatized custom list for that content type and two sites. Here is the content type:
Seo é an struchtúr an tsuímh:
2. Cuir an CQWP tar éis a chruthú mo subsites tionscadail agus liostaí achoimre singleton tionscadal:
3. Cuir an t-eolas breise a ba mhaith liom tríd an <CommonViewFields>:
<maoin ainm="CommonViewFields" cineál="teaghrán">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</maoin>
Tabhair faoi deara go raibh mé a choinneáil ar na réimsí go léir mhaoin ar líne amháin nó nach mbeadh sé ag obair (Ba mhaith CQWP insint dom go ais an cheist Níl aon rud).
4. Ag an bpointe seo, we’re ready to move beyond the MSDN article and flip on over to Heather Solomon’s article. Follow her steps starting near step #5 a chruthú saincheaptha / unghosted version of ItemStyle.xsl. I follow Heather’s advice, suas trí chéim 11 agus a fháil ar na torthaí idirmheánacha:
4.1: Ainmnigh mo XSL teimpléad seo a leanas mar:
<XSL:ainm teimpléad = "Greille" mheaitseáil = "Rae[@Style=’Grid’]" mode = "itemstyle">
Liom freisin a mhodhnú beagán Mhol sí <XSL:do-gach …> ag cur le <br /> chlib a chur ar fáil ar liosta níos glaine:
<XSL:do-gach roghnú="@ *">
P:<XSL:luach-ar roghnú="ainm()" /><br/>
</XSL:do-gach>
4.2: Mé a mhodhnú an chuid gréasáin, téigh go dtí cuma agus mo "Greille roghnú" stíl:
Cuir an t-athrú agus anseo tá an toradh:
Is féidir linn a fheiceáil ó na réimsí thuas gur mian linn a (Ainm an Tionscadail, chostas, stádas, etc) are available for us to use when we emit the HTML. Not only that, but we see the names by which we must reference those columns in the XSL. Mar shampla, Stádas againn Tionscadal tagartha mar "Project_x005F_x0020_Name".
Ag an bpointe seo, imeacht againn ó bhlag Heather agus ó na shoulders na giants, Liom a chur mo beagán féin.
ContentQueryMain.xsl
NÓTA: Nuair athruithe a dhéanamh ar an dá ContentQueryMain.xsl chomh maith le ItemStyle.xsl, gá duit a sheiceáil na comhaid ar ais i roimh a fheiceann tú ar an éifeacht do chuid athruithe.
Do-eangach a dhéanamh chun críocha, MOSS uses two different XSL files to produce the results we see from a CQWP. To generate the previous bit of output, we modified ItemStyle.xsl. MOSS actually uses another XSL file, ContentQueryMain.xsl to in conjunction with ItemStyle.xsl to generate its HTML. As its name implies, Is é an príomh-ContentQueryMain.xsl "" XSL that controls the overall flow of translation. It iterates through all the found items and passes them one by one to templates in ItemStyle.xsl. We’ll modify ItemStyle.xsl to generate the open <tábla> tag roimh astú an ró chéad na sonraí agus an spriocdháta <tábla> tag after emitting the last row. To accomplish this, ContentQueryMain.xsl atá modhnaithe go dtí dhá paraiméadair pas a fháil ar ár "greille" teimpléad i ItemStyle.xsl, "As a chéile is déanaí" and "current row". ItemStyle.xsl uses these to conditionally emit the necessary tags.
Ag baint úsáide as teicníc Heather Sholamón ar, we locate ContentQueryMain.xsl. It is located in the same place as ItemStyle.xsl. This screen shot should help:
Ní mór dúinn a dhéanamh ar na hathruithe seo a leanas:
- Athraigh an teimpléad XSL, "CallItemTemplate" that actually invokes our Grid template in ItemStyle.xsl. We will pass two parameters to the Grid template so that it will have the data it needs to conditionally generate opening and closing <tábla> clibeanna.
- Athraigh eile beagán de ContentQueryMain.xsl go bhfuil gá, CallItemTemplate "" chun pas a fháil sé LastRow "" paraiméadar ionas gur féidir LastRow a chur ar aghaidh chuig ár teimpléad Eangach.
Aimsigh an teimpléad atá ainmnithe "OuterTemplate.CallItemTemplate" aitheanta ag an teaghrán:
<XSL:teimpléad ainm="OuterTemplate.CallItemTemplate">
In ionad an teimpléad iomlán mar seo a leanas:
|
<XSL:teimpléad ainm="OuterTemplate.CallItemTemplate">
<XSL:stop a chur ainm="CurPosition" />
<!--
Cuir an LastRow "" paraiméadar.
Bainimid úsáid ach amháin nuair a bhíonn sé an pas stíl mír i "Eangach".
-->
<XSL:stop a chur ainm="LastRow" />
<XSL:roghnú>
<XSL:nuair a tástáil="@ Stíl = 'NewsRollUpItem'">
<XSL:iarratas a dhéanamh-teimpléid roghnú="." Modh="itemstyle">
<XSL:le-param ainm="EditMode" roghnú="$cbq_iseditmode" />
</XSL:iarratas a dhéanamh-teimpléid>
</XSL:nuair a>
<XSL:nuair a tástáil="@ Stíl = 'NewsBigItem'">
<XSL:iarratas a dhéanamh-teimpléid roghnú="." Modh="itemstyle">
<XSL:le-param ainm="CurPos" roghnú="$CurPosition" />
</XSL:iarratas a dhéanamh-teimpléid>
</XSL:nuair a>
<XSL:nuair a tástáil="@ Stíl = 'NewsCategoryItem'">
<XSL:iarratas a dhéanamh-teimpléid roghnú="." Modh="itemstyle">
<XSL:le-param ainm="CurPos" roghnú="$CurPosition" />
</XSL:iarratas a dhéanamh-teimpléid>
</XSL:nuair a>
<!--
Staid reatha agus lastrow ar aghaidh chuig an teimpléad itemstyle.xsl Eangach.
Beidh ItemStyle.xsl sin a úsáid chun scaoileann an oscailte agus dúnta <tábla> clibeanna.
-->
<XSL:nuair a tástáil="@ Stíl = 'Eangach'">
<XSL:iarratas a dhéanamh-teimpléid roghnú="." Modh="itemstyle">
<XSL:le-param ainm="CurPos" roghnú="$CurPosition" />
<XSL:le-param ainm="Last" roghnú="$LastRow" />
</XSL:iarratas a dhéanamh-teimpléid>
</XSL:nuair a>
<XSL:ar shlí eile>
<XSL:iarratas a dhéanamh-teimpléid roghnú="." Modh="itemstyle">
</XSL:iarratas a dhéanamh-teimpléid>
</XSL:ar shlí eile>
</XSL:roghnú>
</XSL:teimpléad>
|
Cur síos ar na tuairimí chun críche na n-athruithe.
Ar ndóigh,, an OuterTemplate.CallItemTemplate "" is itself called from another template. Locate that template by searching for this text string:
<XSL:teimpléad ainm="OuterTemplate.Body">
Scrollaigh trí na treoracha i OuterTemplate.Body agus cuir isteach an paraiméadar LastRow mar seo a leanas (a thaispeántar mar a comment i gcló iodálach):
<XSL:glao-teimpléad ainm="OuterTemplate.CallItemTemplate">
<XSL:le-param ainm="CurPosition" roghnú="$CurPosition" />
<!-- Cuir isteach an paraiméadar LastRow. -->
<XSL:le-param ainm="LastRow" roghnú="$LastRow"/>
</XSL:glao-teimpléad>
Tar éis seo ar fad, againn ar deireadh tá rudaí a chur ar bun i gceart ionas gur féidir ár ItemStyle.xsl scaoileann <tábla> clibeanna ag an áit cheart.
ItemStyle.Xsl
NÓTA: Arís, sheiceáil i ItemStyle.xsl tar éis aon athruithe mar sin a fheiceann tú ar an éifeacht na n-athruithe.
Tá dhá thasc anseo:
- Replace the entire Grid template. You can copy/paste from below.
- Cuir roinnt jumbo mumbo lasmuigh den sainmhíniú teimpléad a chuireann ar chumas "formatcurrency" template to work. (Is féidir leat insint go bhfuil mé a láimhseáil tenuous ar XSL).
An Chéad, in aice leis an barr de ItemStyle.xsl, chur leis an líne seo:
<!-- Roinnt jumbo mumbo sin ar ár gcumas a chur ar taispeáint U.S. airgeadra. -->
<XSL:deachúil-format ainm="foirne" dhigit="D" />
<XSL:teimpléad ainm="Réamhshocrú" mheaitseáil="*" Modh="itemstyle">
Tabhair faoi deara gur chuir mé é díreach roimh an <XSL:ainm teimpléad = "Default" …> sainmhíniú.
Ar Aghaidh, go back to our Grid template. Replace the entire Grid template with the code below. It is thoroughly commented, Ní ach ná bíodh aon leisce ort ríomhphost chugam nó tuairimí ar mo bhlag fhágáil má tá ceisteanna agat.
|
<XSL:teimpléad ainm="Greille" mheaitseáil="Rae[@ Stíl = 'Eangach']" Modh="itemstyle">
<!--
ContentMain.xsl Gabhann CurPos agus Deiridh.
Bainimid úsáid as na a scaoileann coinníollach an oscailte agus dúnta <tábla> clibeanna.
-->
<XSL:stop a chur ainm="CurPos" />
<XSL:stop a chur ainm="Last" />
<!-- Na hathróga seo a leanas gan athrú ó ItemStyle.xsl caighdeánach -->
<XSL:athróg ainm="SafeImageUrl">
<XSL:glao-teimpléad ainm="OuterTemplate.GetSafeStaticUrl">
<XSL:le-param ainm="UrlColumnName" roghnú="'ImageUrl'"/>
</XSL:glao-teimpléad>
</XSL:athróg>
<XSL:athróg ainm="SafeLinkUrl">
<XSL:glao-teimpléad ainm="OuterTemplate.GetSafeLink">
<XSL:le-param ainm="UrlColumnName" roghnú="'LinkUrl'"/>
</XSL:glao-teimpléad>
</XSL:athróg>
<XSL:athróg ainm="DisplayTitle">
<XSL:glao-teimpléad ainm="OuterTemplate.GetTitle">
<XSL:le-param ainm="Teideal" roghnú="@ Teideal"/>
<XSL:le-param ainm="UrlColumnName" roghnú="'LinkUrl'"/>
</XSL:glao-teimpléad>
</XSL:athróg>
<XSL:athróg ainm="LinkTarget">
<XSL:más rud é tástáil="@ OpenInNewWindow = 'Fíor'" >_blank</XSL:más rud é>
</XSL:athróg>
<!--
Seo linn a shainiú athróg, "TableStart". Tá sé seo an HTML
. Tabhair faoi deara gur CurPos = 1, Cuimsíonn sé an HTML i tag CDATA.
Seachas sin, beidh sé folamh.
Is é an luach tableStart emited go ndéantar gach ItemStyle am a dtugtar trí
.
-->
<XSL:athróg ainm="tableStart">
<XSL:más rud é tástáil="$CurPos = 1">
<![CDATA[
<teorann tábla = 1>
<tr bgcolor = "gorm">
<td><cló dath = "bán"><b>Ainm an Tionscadail</b></Is iad></td>
<td ailíniú = "ceart"><cló dath = "bán"><b>Comhlánaigh Dáta</b></Is iad></td>
<td ailíniú = "ceart"><cló dath = "bán"><b>Buiséad</b></Is iad></td>
<td ailíniú = "ceart"><cló dath = "bán"><b>Costas Iarbhír</b></Is iad></td>
<td><cló dath = "bán"><b>Stádas Foriomlán</b></Is iad></td>
</tr>
]]>
</XSL:más rud é>
</XSL:athróg>
<!--
Eile athróg, tableEnd Sainmhíníonn ach an chlib tábla deiridh.
Mar is amhlaidh le tableStart, tá sé i gcónaí emited. Sin é an fáth go bhfuil a luach.
-->
<XSL:athróg ainm="tableEnd">
<XSL:más rud é tástáil="$CurPos toil; $ Last">
<![CDATA[ </tábla> ]]>
</XSL:más rud é>
</XSL:athróg>
<!--
I gcónaí scaoileann an t-ábhar tableStart. Más rud é nach é seo an chéad
, ansin a fhios againn a luach
.
Díchumasaigh aschur éalú toisc nach nuair tableStart sé folamh, sé
. Má, beidh sé a ghiniúint<tábla>" in ionad "<tábla>".
-->
<XSL:luach-ar roghnú="$tableStart" dhíchumasú-aschur-éalú="yes"/>
<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:luach-ar roghnú="@ Project_x005F_x0020_Name"/>
</td>
<td ailíniú="ceart">
<XSL:luach-ar roghnú="@ Project_x005F_x0020_End_x005F_x0020_Date"/>
</td>
<td ailíniú="ceart">
<XSL:glao-teimpléad ainm="formatCurrency">
<XSL:le-param ainm="luach" roghnú="@ Project_x005F_x0020_Budget"></XSL:le-param>
</XSL:glao-teimpléad>
</td>
<td ailíniú="ceart">
<XSL:glao-teimpléad ainm="formatCurrency">
<XSL:le-param ainm="luach" roghnú="@ Project_x005F_x0020_Expenses"> </XSL:le-param>
</XSL:glao-teimpléad>
</td>
<td>
<XSL:luach-ar roghnú="@ Project_x005F_x0020_Status"/>
</td>
<!--
Gach seo a leanas a bhfuil trácht amach chun rudaí a shoiléiriú.
Mar sin féin, thabhairt ar ais agus é a stuif isteach <td> a fheiceáil ar a
.
-->
<!--
<div id = "linkitem" aicme = "mír">
<XSL:má tástála = "teaghrán fad-($SafeImageUrl) != 0 ">
<aicme div = "íomhá i limistéar an-chlé">
<a href = "{$SafeLinkUrl}" sprioc = "{$LinkTarget}">
<img aicme = "íomhá-seasta-leithead" src = "{$SafeImageUrl}" Poiblı = "{@ ImageUrlAltText}"/>
</a>
</div>
</XSL:más rud é>
<aicme div = "nasc-item">
<XSL:glao-teimpléad name="OuterTemplate.CallPresenceStatusIconTemplate"/>
<a href = "{$SafeLinkUrl}" sprioc = "{$LinkTarget}" title = "Ar{@ LinkToolTip}">
<XSL:luach-ar roghnaigh = "$ DisplayTitle" />
</a>
<aicme div = "tuairisc">
<XSL:luach-ar roghnaigh = "@ Cur Síos" />
</div>
</div>
</div>
-->
</tr>
<!--
Scaoileann an chlib tábla deiridh. Más rud é nach bhfuil muid ar an tsraith dheireanach,
beidh sé seo a bheith folamh.
-->
<XSL:luach-ar roghnú="$tableEnd" dhíchumasú-aschur-éalú="yes"/>
</XSL:teimpléad>
<XSL:teimpléad ainm="formatCurrency">
<XSL:stop a chur ainm="luach" roghnú="0" />
<XSL:luach-ar roghnú='bhformáid-uimhir($luach, "$ DDD,DDD,DDD.DD ", "Foireann")' />
</XSL:teimpléad>
|