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" |
Tá sé seo thar a bheith úsáideach. Go raibh maith agat!
Aah… go raibh sé mar gheall ar ainmnithe mé mo Stíl Liosta difriúil agus ní raibh a thuiscint go sa ContentQueryMain.xsl seiceálacha sé ar an "stíl":
<XSL:nuair tástála = "@ Stíl = 'NameOfMyStyle'">
Le Athainmníodh gur oibrigh sé. 🙂
D'oibrigh sé beagnach dom: Bhainistiú liom scríobh an </tábla> deireadh chlib i gceart, ach tá an chlib ag tosú ar iarraidh. Dealraíonn sé an tástáil = "CurPos $ = 1" Ní fíor ar ais. Ach cén fáth?
Post Mór. Paul bhfuil i dhéanamh ar na rudaí thuas. Tá ceist agam, conas is féidir liom achive suim "Expences IARBHÍR IOMLÁN" nó suim ar luach na dhá cholún.
An bhfuil aon obair déanta agat le cruthú saincheaptha ContentQueryMain agus ItemStyle XSL comhaid? Is é an chúis a iarraidh orm nach bhfuil mé ag iarraidh a bheith buartha faoi mo stíleanna saincheaptha a bheith overwritten le haon paistí nó uasghrádú. An bhfuil tú go bhfuil samplaí? Tá mé iarracht a dhéanamh cóip comhionann ar an ContentQueryMain.xsl agus uaslódáil an chóip sin saincheaptha nua don Leabharlann Stíl. Nuair a chur tagairt don comhad seo XSL i maoin MainXslLink an WebPart. Ar, Faighim 401 nach n-údaraítear. Is é an saincheaptha XSL comhad a leagan foilsithe agus tá gach duine rochtain a léigh sé.
go raibh maith agat post iontach! Curtha battling leis an anois le haghaidh an cúpla lá anuas.
Hi, raibh sé seo ina chuidiú i ndáiríre phost. Tá sé ar fad ag obair, agus curtha i bhfeidhm freisin ar athrú Mike Brown ar sin tá sé grúpaí
na torthaí taobh istigh den tábla le cibé roghnaigh mé mar an Grúpa De réir paraiméadar i CQWB ar airíonna.
Rinne mé an teideal nasc freisin, mar sin a oibríonn sé nicely. Tá mé fós fadhb amháin, cé go. Tá mé ag grúpáil na torthaí de réir ainm suíomh. Laistigh den tábla, grúpaí sé iad nicely, agus tá sé go hiontach, ach atá priontáil sé fós go léir an ghrúpa
ainmneacha(i mo chás féin ar an suíomh ainmneacha) os cionn an tábla. An bhfuil duine ar bith a fhios agam conas chun fáil réidh leis na?
Go raibh maith agat,
Greg
Airteagal Nice. Éirigh liom a thabhairt do mo tábla an cuma ar Liostaí Sharepoint mhainneachtain ag anailís a dhéanamh ar an cód foinse an liosta. Seo iad na príomh-bloic HTML is gá a d'oirfeadh i ItemStyle:
<TÁBLA leithead = "100%" aicme = "ms-listviewtable" teorann = 0 cellspacing = 0 cellpadding = 1 dir = "Níl">
<!–CEANNTÁSC–>
<TR aicme = "ms-viewheadertr" VALIGN = BARR>
<Raon feidhme a nowrap TH = "col" aicme = "ms-vh2"><stíl div = "leithead:100%;seasamh:coibhneasta;D'fhág:0;barr:0;">
<Stíl TÁBLA = "leithead:100%;" CtxNum = "1" airde = "100%" cellspacing = 1 cellpadding = 0 aicme = "ms-unselectedtitle">
<TR>
<Éamon Ó Cuív TD width = "100%" Rang = "ms-vb" nowrap>
Teideal téacs anseo
</TD>
<Éamon Ó Cuív TD stíl = "post:iomlán;">
</TD>
</TR>
</TÁBLA></div>
</TH>
<!–Déan do gach cealla header–>
</TR>
<!– Sonraí Tábla –>
<TR aicme = "">
<!–Sonraí gcolún, úsáid a bhaint as cód Pól le haghaidh an chéad cheann leis an hyperlink –>
<Éamon Ó Cuív TD Rang = "ms-vb2">Sonraí anseo</TD>
<!–Gcolún Folamh–>
<Éamon Ó Cuív TD Rang = "ms-vb2">
<réise dir = None></réise><
/TD>
<!–Gcolún Dáta–>
<Éamon Ó Cuív TD Rang = "ms-vb2">
<NOBR>11/12/2008</NOBR>
</TD>
</TR>
<!–***As a chéile Malartach – Bain úsáid as XSL athróg nua a chur isteach ar an rang malartach atá bunaithe ar an tsraith reatha modulo 2–>
<TR aicme = "ms-alternating">
…
</TR>
</TÁBLA>
Thatz beacht a bhí á lorg i do .. tú carraig fear .. .. love Fada cónaí ort ar an bpost..
<XSL:roghnú seo-teimpléid = "." mode = "itemstyle">
<XSL:le-param ainm = "CurPos" roghnaigh = "$ CurPosition" />
<XSL:le param-ainm = "Last" roghnaigh = "$ LastRow" />
<XSL:le-param ainm = "StartNewGroup" roghnaigh = "@ __begingroup" />
</XSL:nuair a>
<XSL:when test="$StartNewGroup = ‘True’">
<tr>
<td >
<XSL:glao-teimpléad ainm = "OuterTemplate.GetGroupName">
<XSL:le-param ainm = "GroupName" roghnaigh = "@ *[ainm()= $ Grúpa]"/>
<XSL:le-param ainm = "GroupType" roghnaigh = "$ GroupType" />
</XSL:glao-teimpléad>
</td>
</tr>
</XSL:nuair a>
<XSL:ar shlí eile>
</XSL:ar shlí eile>
</XSL:roghnú>
Hi Paul,
Nuair a bheidh ag obair leis an xml / XSL agus cuid ábhar gréasáin cheist, a fuair tú aon bhealach maith go formáid do XSLT? Ag iarraidh chun athruithe a dhéanamh agus an dearadh a thástáil tá ag éirí le pian ceart sa ** a díreach ag baint úsáide as eagarthóir téacs…
Gach an chuid is fearr
(e.g. https://myweb.com/Marketing/images/icn-order.gif, )
Ar cheart dom a úsáid Íomhá nó Picture in Cineál Field CommonViewFields? (e.g. InternalColumnName, Íomhá)
Your post is exactly what I was looking for. Mar sin féin, I can’t get it to work.
I have documents that are stored in various doc. libraries but classified using a custom class column (rogha: 1 nó 2. I want to use CQWP to show these documents based on thier class.
I was able to add the CQWP, export it to SPD, configure the itemStyle.xls to show custom fileds in list view. áfach,, I could not successfully implement what you describe here.
These are the columns I want to show in my CQWP:
File Type (to show icon)
File Title
Date Last Modified
Modified By Who
Checked Out To
Checked In Comments
I currently have the result in a list format. How do I change it to a talble format.
Go raibh maith agat.
Saji
Tá brón orainn le haghaidh an missspelling ar mo ainm nach bhfuil cinnte nuair an ” tháinig ó.