Kourikoulòm ak objektif
Soti nan bwat la, BAB PANYÒL’ Requête contenu Web pati (CQWP) affiche rezilta li nan yon lis fòma, menm jan an pou fè rechèch rezilta yo. Se tou posib pou yo ekspoze rezilta nan yon fòma galri (c'est-à-dire. Fòma tab HTML). Gwiyad be'l varyete fo'm ki pi bon nan kèk sikonstans. Mwen kapab dekri kijan pou reyalize sa rive vre nan atik sa a.
Biznis Scénario
Mwen te travay ak yon kliyan an sou yon antrepwiz laj bab PANYÒL déploiement. Nou te fèt yo classification comme pou pwojè se sitwayen pwemye klas nan anbakasyon a yo ye pwòp kote ki gen sou tèt kiyè. Pwojè administratè genyen yon lis singleton pwojè rezime enfòmasyon, tankou Tit, bidjè, te ka espere fin dat, bidjè ki rete ak lòt kalite rezime sistèm yo. Pa "singleton" Mwen vle di yon repòtaj lis SharePoint ki garanti pou genyen sèlman yon atik. Manière, li sanble ke sa:
Approche teknik la. Se menm jan te dekri Isit (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). A CQWP itilize yon transform XSL è HTML pou browser a Ann.
Mwen toujou envision rezilta a devan plonje nan XSL a paske XSL se yon tèrib kòchma. Se isit la mwen bèl rezilta:
HTML kon sa génère rezilta sa:
<html> <kò> <sant> <tab fontyè= 1> <!-- Étiquettes-> <tr bgcolor= ble> <td><klavye koulè= blanch><b>Pwojè non</b></klavye></td> <td fè aliman= dwat><klavye koulè= blanch><b>Dat nèt sou tout pwen</b></klavye></td> <td fè aliman= dwat><klavye koulè= blanch><b>Bidjè</b></klavye></td> <td fè aliman= dwat><klavye koulè= blanch><b>Depans réel</b></klavye></td> <td><klavye koulè= blanch><b>Tout estati</b></klavye></td> </tr> <tr> <td>Re-fil chanm konpitè.</td> <td fè aliman= dwat>02/01/08</td> <td fè aliman= dwat>22,500.00</td> <td fè aliman= dwat>19,000.00</td> <td>Nan pwogrè</td> </tr> <tr> <td>Serveurs pwovizyon pou SQL à</td> <td fè aliman= dwat>04/01/08</td> <td fè aliman= dwat>7,500.00</td> <td fè aliman= dwat>0.00</td> <td>Te planifye</td> </tr> </tab> </sant> </kò> </html> |
Aproche apròch
Swiv sa etap sa yo pou kreye gri an:
- Idantifye composants de la grille (èskonbwit/colonnes).
- Defini Et kreye colonnes kote ki gen nesesè.
- Kreye sub pozisyon pou pwojè ak nan lis singleton.
- Ajoute CQWP a yon paj entènèt ak configure li pou fè rechèch pou lis ou.
- Motifye CQWP la XML rasanble moute les colonnes supplémentaires.
- Motifye a XSL pou générer yon tab.
M pral konsantre sou anpil sis. Anpil moun yonn nan kat se kò-devlopman ak yon bagay ki gen CQWP kap itilize li an ki te deja fè. Nimewo, senk ki te byen documentés pa lòt moun ki genyen atik sa a exhaustive ekran te tire en nan MSDN Isit (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) Et blog Heather Salomon te Isit (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).
Reta ak Vis
Te chita nan Et aplike étapes UN nan senk as per a MSDN dokiman Et atik Heather Salomon te.
Nan pwen sa a, ou te vin ajoute nan CQWP ou paj Et ou gen ou <CommonViewFields> configuré comme nesesè.
Swiv les étapes selon lizaj, M gen rezilta entèmedyè sa:
1. Kreye yon jan de contenu, yon repòtaj lis templatized pou sa pi kontan tip e ki kote de. Se isit la pi kontan jan de:
Isit la se kote ki gen sipò:
2. Ajoute CQWP a aprè li te kreye m' pwojè sites Et singleton pwojè rezime lis:
3. Ajoute tout a plis enfòmasyon mwen vle via la <CommonViewFields>:
<pwopriyete fe-apel="CommonViewFields" tip="filè">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</pwopriyete>
N ap fè konnen mwen te gen pou kenbe tout pwopwiyete savann sou yon liy ou li pa ta travay (CQWP ta di m' sa requête la te retounen atik pa).
4. Nan pwen sa a, nou pwèt pou nou avanse dèyè a atik MSDN ak (sou sou pou atik Heather Salomon te. Swiv pye l' kòmanse tou pwe pa nan #5 pou kreye yon personnalisé / unghosted vèsyon pipiti de youn nan ItemStyle.xsl. Mwen swiv konsèy Heather a, leve kanpe par étape 11 Et obtenir rezilta entèmedyè sa:
4.1: Non M' modèle XSL comme piba:
<xsl:modèle non = "Grille" à = "ligne[@Style = 'Gwiyad']" mòd = "itemstyle">
Mwen tou pa yon ti jan motifye li a <xsl:pou-chak …> pa pandan l ajoute yon <br /> etikèt ki pou bay yon moun ki nan lis:
<xsl:pou-chak fè chwa="@*"> P I:<xsl:valè-de fè chwa="fe-apel()" /><br/> </xsl:pou-chak>
4.2: Mwen motifye pati entènèt la, ale nan figi yo epi chwazi m "Grille" mod:
Aplike a chanje Et isit la se rezilta a:
Nou kapab wè de la CI-dessus ke jaden nou vle (Pwojè non, depans, estati, ets) ki disponib pou nou pou yo itilize lè nou fè sikile a HTML. Pa sèlman sa, Men, nou wè non a nou dwe référence kolòn sa nan XSL a. Pa ekzanp, nou référence pwojè estati ou kòm "Project_x005F_x0020_Name".
Nan pwen sa a, nou pati nan Heather an blog ak nan zepòl gran sa yo, Mwen ajoute ti afèm.
ContentQueryMain.xsl
NOTE: Lè fè chanjman pou toulède ContentQueryMain.xsl osi byen ke ItemStyle.xsl, ou bezwen pou yo tcheke fichiers sa tounen nan, anvan ou te wè fè chanjman ou.
Pou rezon an tankou ofrann grille, Bab PANYÒL yo itilize de diferan XSL fichiers pou pwodwi rezilta nou wè nan yon CQWP. Pou jenere ansyen moso pèsistans yap ogmante jiska, nou te modifye ItemStyle.xsl. Bab PANYÒL yo aktyèlman itilize yon lòt XSL ranpli, ContentQueryMain.xsl pou ansanm ak ItemStyle.xsl pou jenere HTML li. Menm jan li yo, non implique, ContentQueryMain.xsl, ki se "pwensipal la" XSL yo kontwole tout pèdi tradiksyon. Une nan tout atik a ak rann yo yonn pou modèles nan ItemStyle.xsl. Nou ap motifye ItemStyle.xsl pou jenere pòt <tab> etikèt devan émet dispit lan premye done e fèmen a <tab> etikèt apwè émet dènye dispit lan. Pou reyalize sa, ContentQueryMain.xsl modifye pou yo pase pou nou "grille de paramètres" modèle nan ItemStyle.xsl, "dènye ligne" ak "aktyèl afile". ItemStyle.xsl itilize sa è conditionnelle baj nesesè yo.
W ap itilize teknik Heather Salomon te, nou jwenn ContentQueryMain.xsl. Sitiye nan la, kote ke ItemStyle.xsl. Piki ekran sa a ta dwe ede:
Nou bezwen pou fè chanjman suivant yo:
- Motifye yon modèle xsl, "CallItemTemplate" ki aktyèlman appelle modèle gwiyad nou nan ItemStyle.xsl. Nou pral pase de karakteristik pou modèle galri a ke li pwal gen yon data li bezwen pou conditionnelle pwodui louvri ak fèmen <tab> baj.
- Motifye yon lòt ti ContentQueryMain.xsl ki rele la "CallItemTemplate" pou yo pase l' yon "LastRow" paramètre se konsa, LastRow sa ta dwe pase pou nou modèle Grille.
Recherchez modèle a ki rele "OuterTemplate.CallItemTemplate" idantifye nan kòd la:
<xsl:modèle fe-apel="OuterTemplate.CallItemTemplate">
Ranplase a an antye modèle comme piba:
<xsl:modèle fe-apel="OuterTemplate.CallItemTemplate"> <xsl:param fe-apel="CurPosition" /> <!-- Ajoute a "LastRow" paramètre. Nou sèlman itilize li lè pase stil atik nan "Grille". --> <xsl:param fe-apel="LastRow" /> <xsl:chwazi> <xsl:Kile tès="@Style = 'NewsRollUpItem'"> <xsl:modèles aplike fè chwa="." mòd="itemstyle"> <xsl:ak-param fe-apel="EditMode" fè chwa="$cbq_iseditmode" /> </xsl:modèles aplike> </xsl:Kile> <xsl:Kile tès="@Style = 'NewsBigItem'"> <xsl:modèles aplike fè chwa="." mòd="itemstyle"> <xsl:ak-param fe-apel="CurPos" fè chwa="$CurPosition" /> </xsl:modèles aplike> </xsl:Kile> <xsl:Kile tès="@Style = 'NewsCategoryItem'"> <xsl:modèles aplike fè chwa="." mòd="itemstyle"> <xsl:ak-param fe-apel="CurPos" fè chwa="$CurPosition" /> </xsl:modèles aplike> </xsl:Kile> <!-- Pase pozisyon aktyèl ak lastrow pou modèle itemstyle.xsl Grille. ItemStyle.xsl pwal itilize sa pou fè sikile a louvri Et fèmen <tab> baj. --> <xsl:Kile tès="@Style = 'Grille'"> <xsl:modèles aplike fè chwa="." mòd="itemstyle"> <xsl:ak-param fe-apel="CurPos" fè chwa="$CurPosition" /> <xsl:ak-param fe-apel="Dire" fè chwa="$LastRow" /> </xsl:modèles aplike> </xsl:Kile> <xsl:san sa> <xsl:modèles aplike fè chwa="." mòd="itemstyle"> </xsl:modèles aplike> </xsl:san sa> </xsl:chwazi> </xsl:modèle> |
Kòmantè yo pou esplike sa chanjman.
Men wi, la "OuterTemplate.CallItemTemplate" li menm ki rele soti nan yon lòt modèle. Lokalize modèle sa pa chache kòd tèks sa a:
<xsl:modèle fe-apel="OuterTemplate.Body">
Ki gen nan sa pou nou fè nan OuterTemplate.Body epi mete paramètre LastRow a comme piba (montre kòm yon kòmantè nan en):
<xsl:apèl-modèle fe-apel="OuterTemplate.CallItemTemplate"> <xsl:ak-param fe-apel="CurPosition" fè chwa="$CurPosition" /> <!-- Mete a paramètre LastRow. --> <xsl:ak-param fe-apel="LastRow" fè chwa="$LastRow"/> </xsl:apèl-modèle>
Après tout sa, nou gen a la fen sa ki te mete sou pye correctement lè sa a, nou ItemStyle.xsl ka fè sikile <tab> baj nan sèl kote.
ItemStyle.Xsl
NOTE: Ankò, tcheke nan ItemStyle.xsl t' ap nenpòt chanjman ki fèt lè sa a, n' a wè effet-kou chanjman sa.
Nou gen de travay isit la:
- Ranplase modèle gri an antye. Ou kapab kopi/mòtye depi anba.
- Ajoute yon trames mumbo te deyò a definisyon modèle permet "formatcurrency" modèle pou travay. (Ou kapab di ke mwen gen yon rèl manch sou XSL).
Premye, près de ItemStyle.xsl sou tèt, ajoute liy sa a:
<!-- Kèk trames mumbo permet nou pou yo ekspoze aux. lajan. --> <xsl:desimal-fòma fe-apel="anplwaye" chif="KRAZE-BRIZE" /> <xsl:modèle fe-apel="Par" jwenn mèt ke l="*" mòd="itemstyle">
Remarque te ajoute ke mwen ke li tou dwat anvan a <xsl:modèle non = "par" …> definisyon.
Pwochen, tounen al jwenn nou modèle galri. Ranplase modèle gri an antye ak kòd ki pi ba. Li devan dèyè a, Men, pa ezite e-mail m' pa kite kòmantè sou blog mwen si ou gen kesyon.
<xsl:modèle fe-apel="Galri" jwenn mèt ke l="Pagaye[@Style = 'Grille']" mòd="itemstyle"> <!-- ContentMain.xsl rann CurPos ak dènye. Nou itilize sa yo pou conditionnelle fè sikile a louvri ak fèmen <tab> baj. --> <xsl:param fe-apel="CurPos" /> <xsl:param fe-apel="Dire" /> <!-- Apwe variables non a ItemStyle.xsl estanda --> <xsl:varyab fe-apel="SafeImageUrl"> <xsl:apèl-modèle fe-apel="OuterTemplate.GetSafeStaticUrl"> <xsl:ak-param fe-apel="UrlColumnName" fè chwa="'ImageUrl'"/> </xsl:apèl-modèle> </xsl:varyab> <xsl:varyab fe-apel="SafeLinkUrl"> <xsl:apèl-modèle fe-apel="OuterTemplate.GetSafeLink"> <xsl:ak-param fe-apel="UrlColumnName" fè chwa="'LinkUrl'"/> </xsl:apèl-modèle> </xsl:varyab> <xsl:varyab fe-apel="DisplayTitle"> <xsl:apèl-modèle fe-apel="OuterTemplate.GetTitle"> <xsl:ak-param fe-apel="Tit" fè chwa="@Title"/> <xsl:ak-param fe-apel="UrlColumnName" fè chwa="'LinkUrl'"/> </xsl:apèl-modèle> </xsl:varyab> <xsl:varyab fe-apel="LinkTarget"> <xsl:Si tès="@OpenInNewWindow = 'Vre'" >_blank</xsl:Si> </xsl:varyab> <!-- Isit la nou defini yon varyab, "tableStart". Sa a genyen ladan HTML sa nou itilize pou defini sanvenmil tab la tankou étiquettes kolòn yo. Note si sa CurPos = 1, sa gen ladann HTML a nan yon etikèt CDATA. San sa, se va vid. Valè tableStart se emited chak fwa ItemStyle te rele via ContentQueryMain.xsl. --> <xsl:varyab fe-apel="tableStart"> <xsl:Si tès="$CurPos = 1"> <![CDATA[ <tab fontyè = 1> <tr bgcolor = "ble"> <td><klavye koulè = "blanch"><b>Pwojè non</b></klavye></td> <fè aliman td = "dwa"><klavye koulè = "blanch"><b>Dat nèt sou tout pwen</b></klavye></td> <fè aliman td = "dwa"><klavye koulè = "blanch"><b>Bidjè</b></klavye></td> <fè aliman td = "dwa"><klavye koulè = "blanch"><b>Depans réel</b></klavye></td> <td><klavye koulè = "blanch"><b>Tout estati</b></klavye></td> </tr> ]]> </xsl:Si> </xsl:varyab> <!-- Yon lòt varyab, tableEnd tou senpleman définit la fèmen tab etikèt. Kòm ak tableStart, se toujou emited. Se poutèt sa, pri pou li plase conditionnelle ki baze sou konnen si nou te gen te yo te fè pase dènye dispit lan ContentQueryMain.xsl sa. --> <xsl:varyab fe-apel="tableEnd"> <xsl:Si tès="$CurPos = $Last"> <![CDATA[ </tab> ]]> </xsl:Si> </xsl:varyab> <!-- Toujou fè sikile tableStart sa ki nan liv. Si se pa premye ranje a, yo te fè pase pou nou ContentQueryMain.xsl, Lè sa a, nou konnen pri pou li yo va vid. Rann enfim pèsistans yap ogmante jiska ke paske lè tableStart l pa vide, sa gen ladann aktyèl HTML sa nou vle fè an ki te rann pa browser a. Si nou pa di analyseur XSL la pou rann enfim sortie ke, li pral pwodui estaf kòm"<tab>" tan pou"<tab>". --> <xsl:valè-de fè chwa="$tableStart" rann enfim-pèsistans yap ogmante jiska-ke="Wi"/> <tr> <!-- P I: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:valè-de fè chwa="@Project_x005F_x0020_Name"/> </td> <td fè aliman="pa vre"> <xsl:valè-de fè chwa="@Project_x005F_x0020_End_x005F_x0020_Date"/> </td> <td fè aliman="pa vre"> <xsl:apèl-modèle fe-apel="formatcurrency"> <xsl:ak-param fe-apel="valè" |
Sa a été très itil. Mèsi!
Aah… L' paske mwen te rele yon lòt jan m' fason lis Et pa t se sa nan ContentQueryMain.xsl a li contrôles pou a "kalite":
<xsl:Lè test="@Style='NameOfMyStyle'">
Ak sa renommée li te travay. 🙂
Li prèske te travay pou mwen: Mwen ka pèsistans yap ogmante jiska a </tab> fini etikèt kòrèkteman, Men, pa wè kòmanse etikèt la. Li sanble sonde = "$CurPos = 1" pa voye tounen nan tout bon. Men poutèt?
Gwo pòs. Paul mwen te fè tout bagay yo CI-dessus. Mwen gen yon requête, ki kapab mwen achive sòm de "TOTAL RÉEL Expences" ou sòm de rapòte ou lajan pou colonnes de.
Èske ou te fè nenpòt ki travay ak kreye personnalisé ContentQueryMain Et ItemStyle xsl fichiers? La raison mwen mande se sa mwen pa vle pou enkyete w pou kesyon estil personnalisé m' te remplacé ak tout correctifs ou à. Èske ou gen ekzanp yo? Mwen te eseye fè yon kopi menm jan de la ContentQueryMain.xsl Et téléchargement kopi personnalisé nouvo sa nan fason bibliotèk. Lè y ap mete yon referans a fichier xsl sa a nan pwopwiyete MainXslLink ki te .webpart a, M gen 401 pat otorize. Dokiman personnalisé xsl an se yon repòtè yo te pibliye vèsyon pipiti de youn Et tout moun gen aksè lecture pou li.
pòs kokenn byen pa pi mal! Te ap batay ak sa koulye a pou pase kèk jou.
Alo, sa te yon vrèman utile validation. Mwen genyen l tout travay, Et chanjman tou aplike Mike wouj la pou l' groupes
rezilta yo anndan tab la ak tou sa mwen chwazi kòm a gwoup pa paramètre nan pwopwiyete CQWB a.
Mwen te fè Tit lyen yon tou, Se konsa, li travay bien. Mwen toujou gen yon pwoblèm, menm si. Mwen menm regroupement rezilta kote ki gen non. Anndan tab la, li groupes yo bien, e li sanble gwo, Men, se toujou l' soti tout gwoup la
non(nan ka m' kote ki gen non) sou tab la. Fè yon moun konnen kijan pou debarase li de sa yo?
Mèsi,
Greg
Atik bon. Mwen te dirije li pou fè tab mwen an rega defo Sharepoint lis pa analyse sous kòd nan lis la. Isit la, se pi gwo blòk HTML ki bezwen pou ajiste nan ItemStyle:
<TAB lajè = "100%" klas = "madanm listviewtable" fontyè = 0 cellspacing = 0 cellpadding = 1 dir = "Aucun">
<!–LENTO–>
<TR klas = "madanm viewheadertr" VALIGN = SOU TÈT>
<Champ nowrap TH = "epi" klas = "madanm vh2"><mod div = "lajè:100%;pozisyon:relatif;gòch:0;tèt:0;">
<Mod TAB = "lajè:100%;" CtxNum = "1" wotè = "100%" cellspacing = 1 cellpadding = 0 klas = "madanm unselectedtitle">
<TR>
<Lajè TD = "100%" Klas = "madanm vb" nowrap>
Texte du titre ici
</TD>
<Estil TD = "pozisyon:absoli;">
</TD>
</TR>
</TAB></div>
</KLAS 11YÈM>
<!–Repete pou tout cellules lento–>
</TR>
<!– Tab done –>
<TR klas = "">
<!–Kolòn done, sèvi ak kòd Pòl te pou la premye UN Lien a ak –>
<Klas TD = "madanm vb2">Done isit la</TD>
<!–Kolòn vid–>
<Klas TD = "madanm vb2">
<pon dir = Aucun></ire><
/TD>
<!–Kolòn dat–>
<Klas TD = "madanm vb2">
<NOBR>11/12/2008</NOBR>
</TD>
</TR>
<!–***Autre ligne – Sèvi ak yon nouvo varyab XSL ki pral mete klas altènatif la baze sou aktyèl dispit lan modilo 2–>
<TR klas = "madanm-altène">
…
</TR>
</TAB>
Thatz ojis mwen t' ap tann..Ou rock moun..Viv lontan.Renmen ou pou pòs la..
<xsl:modèles aplike fè chwa = "." mòd = "itemstyle">
<xsl:non ak-param = "CurPos" fè chwa = "$CurPosition" />
<xsl:non ak-param = "dire" fè chwa = "$LastRow" />
<xsl:non ak-param = "StartNewGroup" select="@__begingroup" />
</xsl:Kile>
<xsl:Lè eprèv = "$StartNewGroup = 'Vre'">
<tr>
<td >
<xsl:apèl-modèle name="OuterTemplate.GetGroupName">
<xsl:non ak-param = "GroupName" select="@*[fe-apel()= $Group]"/>
<xsl:non ak-param = "GroupType" fè chwa = "$GroupType" />
</xsl:apèl-modèle>
</td>
</tr>
</xsl:Kile>
<xsl:san sa>
</xsl:san sa>
</xsl:chwazi>
Alo Paul,
Lè travay ak pati entènèt requête xml/xsl Et contenu, ou pale creole? ou jwenn yon bon fason pou yo format xslt ou? Ap eseye pou fè chanjman ak tès la conception prouver dwat doulè nan a yon ** sèlman ap itilize yon editè tèks…
Tout pi bon bagay
(par. https://myweb.com/Marketing/images/icn-order.gif, )
Ta dwe mwen konn sèvi ak estati ou foto ki tip jaden CommonViewFields nan? (par. InternalColumnName, Estati)
Pòs ou se ekzateman kisa mwen t' ap tann. Sepandan, Mwen pa ka pran l' pou travay.
Mwen gen dokiman sa yo ki an depo nan plizyè dòk. bibliyotèk men classés w ap itilize yon kolòn personnalisé klas (chwa: 1 ou 2. Mwen vle pou sèvi ak CQWP pou montre dokiman sa yo te baze sou klas yo.
Mwen pa t ' kapab ajoute CQWP a, ekspòtasyon li pou pati sosyal Demokratik, configure itemStyle.xls pou montre personnalisé fileds nan lis view. Sepandan, Mwen te kapab pa avec aplike sa w kapab dekri isit la.
Se sa yo rele les colonnes mwen vle pou montre nan CQWP m:
Jan de fichier (pou montre icône)
Fichier Tit
Dat dènye modifye
Modifye pa ki
Faktè pou
Tcheke nan kòmantè
Mwen kounye a gen rezilta a nan yon lis fòma. Ki jan fè mwen chanje li pou yon fòma talble.
Mèsi.
Saji
Mwen regrèt a missspelling sou non mwen pa si kote a ” ki t' ap soti.