Chak mwa Achiv: Desanm 2007

Kreye Bar Graphiques nan SharePoint

Kourikoulòm:

(AJOU 12/04/07: Te ajoute yon lòt resous enteresan nan finisman entre pou yon lòt blog sa adresses sa via yon trè bon nan entènèt)

Antre blog sa a dekri kijan pou kreye yon graf bar nan SharePoint. Sa a travay nan tou de WSS ak bab PANYÒL environnements kòm li sèlman depann sou a done vi web pati.

A tout approche se comme piba:

  1. Kreye yon lis ou bibliyotèk dokiman ki gen ladann data ou vle trase graf.
  2. Kote ki asosye dokiman bibliyotèk la / personnalisés lis sou yon paj Et kouvri l' pou yon done view entènèt nan (DVWP).
  3. Motifye DVWP la XSL pou générer HTML ki montre kòm yon graf.

Biznis Scénario / Du:

Mwen te kreye yon lis personnalisé ak nivo kolòn Tit Et yon kolòn supplémentaires, "Estati". Modèl sa a (trè simplement) yon "otorizasyon pou frè" scénario kote tit yo repwezante pwojè a ak estati a yon valè de lis:

  • Pwopoze
  • Nan yon pwosè
  • Au

Objektif la se pou pwodwi yon interactive kouche plat bar graf ki montre codes kondisyon sa yo.

M' ont rempli lis e li parèt tankou sa:

imaj

Kreye done View Web pati:

Kreye DVWP a pa ajout personnalisé lis pou yon paj (kote ki gen paj nan ka mwen) Et swiv eksplikasyon Isit (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!395.entry).

San konte yo senpleman ap kreye a DVWP, nou bezwen to pou mete sou byen échange pou montre tout èskonbwit disponib. Pou mwen, sa ki sanble yon bagay tankou sa:

imaj

Nan pwen sa a, Mwen toujou fèmen Pati Demokrat Sosyal ak browser a. Mwen lè sa a re-louvri paj la ap itilize a browser. Sa kapab anpeche a aza/chans mucking moute en pati entènèt la nan paj la.

Motifye XSLT a:

Kounye a se moman pou motifye XSLT a.

Mwen toujou sèvi ak izyèl estidyo pou sa. (Gade Isit pou yon nòt enpòtan sou intellisense ki pwal ede ou anpil).

Mwen kreye yon pwojè vid ajoute kat nouvo fichiers (ranplase les mots "orijinal" Et "New" comme apwopriye):

  • Original.xslt
  • New.xslt
  • Params.xml orijinal
  • Nouvo Params.xml

Nan ka mwen, li sanble ke sa:

imaj

Motifye pati entènèt la ak copie a params Et XSL pou a "orijinal" vèsyon pipiti de youn nan estidyo izyèl.

Objektif isit la, se pou koze a XSL transfòme rezilta nou tounen de la requête DVWP nan HTML renders kòm yon graf.

Pou sa a fini, li te ede pou premye konsidere sa HTML la ta dwe sanble anvan nou pran an boulvès/magregò pa erezon sa ke yo rekonèt tankou "XSL". (Pou yo, sa a se senpman yon egzanp; pa gwoup li ni kopi/mòtye nan estidyo izyèl. Mwen bay yon kou plen kòmanse pwen pou sa ta nan write-up a). Graf echantiyon sa an ki te rann as per HTML a imedyatman apwe:

Egzanp Bar graf

Korespondan HTML:

<html>
<kò>
<sant>
<tab lajè = 80%>
<tr><td><sant>Graf Bar orizontal</td></tr>
<tr>
<fè aliman td = "Centre">
<tab fontyè = "1" lajè = 80%>
<tr>
<lajè td = 10%>Louvri</td>
<td><tab cellpadding ="0" cellspacing ="0" fontyè = 0 lajè = 50%><tr bgcolor = wouj><td>&nbsp;</td></tr></tab></td>
</tr>
<tr>
<lajè td = 10%>Fèmen</td>
<td><tab cellpadding ="0" cellspacing ="0" fontyè = 0 lajè = 25%><tr bgcolor = wouj><td>&nbsp;</td></tr></tab></td>
</tr>
<tr>
<lajè td = 10%>Au</td>
<td><tab cellpadding ="0" cellspacing ="0" fontyè = 0 lajè = 25%><tr bgcolor = wouj><td>&nbsp;</td></tr></tab></td>
</tr>
</tab>
</td>
</tr>
</tab>
</kò>
</html>

Mwen te itilize yon apwòch mouri senp pou kreye anpeche m' pa mete jan nou koumanse koulè lot pou "wouj".

A take-away isit la se sa a: Nan fen, tou sa n' ap fè kreye HTML èskonbwit ak colonnes.

Modèle XSLT:

Mwen te gen copié XSLT sa génère yon graf kouche plat bar. Sa pa fè anyen nivo a se poutèt sa mwen pa p ajoute anpil isit la eksepte sa yo nòt:

  • Mwen te kòmanse avèk a defo XSL SharePoint Concepteur ban m' lè mwen te kreye premye a DVWP.
  • Mwen pa t ' kapab pou voye sa jete nan pati sosyal Demokratik la 657 liy yo pou 166 ranje.
  • M pa t fatra autour ak fichier XML paramètres (sa pa menm ak XSL a Et w ap konnen sa mwen vle di lè ou ale nan motifye DVWP tèt li; genyen de fichiers ou kapab motifye). Sepandan, pou senplifye li, Mwen te retire pwèske tout yo nan XSL a. Sa vle di ke si ou vle fè sèvi ak karakteristik sa, ou annik bezwen pou ajoute définitions varyasyon yo tounen pou XSL a. Sa ki ka fasil depi ou orijinal XSL varyasyon définitions nan pwojè izyèl estidyo ou.
  • Ou ta dwe kapab kopi e pat sa a tou dwat nan pwojè izyèl estidyo ou. apre, wete m' apèl yo ak mete pwòp apèl pou "ShowBar".
  • Sèvi ak machin tonbe nan fè sa pa kreye yon <yon href> konsa: http://server/List?FilterField1=fieldname&FilterValue1=actualFilterValue. Teknik sa ka gen anpil valè contextes lòt. Nan premye, Mwen te panse mwen ta bezwen trèz pou yon fòma plis konplèks: http://server/List/AllItems.aspx?View={guid}&FilterField1=blah&FilterValue1=blah, Men, nan anviwonman mwen sa pa nesesè. Adrès entènèt lis la te fè pase pou nou SharePoint poutèt sa jan sa dwe fèt fasil pou généraliser.

Isit la se:

<xsl:stylesheet vèsyon pipiti de youn="1.0" exclure-rezilta-préfixes="rs z o s ddwrt dt msxsl" 
xmlns:msxsl="urn:kominote schémas microsoft:xslt" xmlns:xsl="http://www.w3.org/ 1999/XSL/transfòme"
xmlns:SharePoint="Microsoft.SharePoint.WebControls" xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer"
xmlns:asp="http://schemas.microsoft.com/ASPNET/20" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime"
xmlns:ou menm="urn:kominote schémas microsoft:biwo" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"
xmlns:dt="uuid:C2F41010-65B3 - 11d 1-A29F-00AA00C14882" xmlns:rs="urn:kominote schémas microsoft:lignes" xmlns:z="#RowsetSchema"
xmlns:ddwrt2="urn:frontpage:ntèn"
> <xsl:pèsistans yap ogmante jiska metòd="html" retrait="Non" /> <xsl:desimal-fòma NaN="" /> <xsl:param fe-apel="ListUrlDir"></xsl:param> <!-- Mwen bezwen pou sipòte yon anba sèvi ak machin sa a. --> <xsl:modèle jwenn mèt ke l="/" xmlns:SharePoint="Microsoft.SharePoint.WebControls"
xmlns:__designer=http://schemas.microsoft.com/WebParts/v2/DataView/designer xmlns:asp="http://schemas.microsoft.com/ASPNET/20"
> <xsl:varyab fe-apel="dvt_StyleName">Tab</xsl:varyab> <xsl:varyab fe-apel="Èskonbwit" fè chwa="/dsQueryResponse/èskonbwit/ligne" /> <xsl:varyab fe-apel="dvt_RowCount" fè chwa="konte($Èskonbwit)" /> <xsl:varyab fe-apel="IsEmpty" fè chwa="$dvt_RowCount = 0" /> <xsl:varyab fe-apel="dvt_IsEmpty" fè chwa="$dvt_RowCount = 0" /> <xsl:chwazi> <xsl:Kile tès="$dvt_IsEmpty"> Se pa done pou graf!<br/> </xsl:Kile> <xsl:san sa> <!-- Enteresan bagay la kòmanse isit la. Nou bezwen defini on variables pou chak ranje nan graf a: total kantite atik ak pousan de total. --> <xsl:varyab fe-apel="totalProposed" fè chwa="konte(/dsQueryResponse/èskonbwit/ligne[normaliser espas(@Status) = 'Te pwopoze'])" /> <xsl:varyab fe-apel="percentProposed" fè chwa="$totalProposed div $dvt_RowCount" /> <xsl:varyab fe-apel="totalInProcess" fè chwa="konte(/dsQueryResponse/èskonbwit/ligne[normaliser espas(@Status) = 'Nan pwosesis la])" /> <xsl:varyab fe-apel="percentInProcess" fè chwa="$totalInProcess div $dvt_RowCount" /> <xsl:varyab fe-apel="totalStalled" fè chwa="konte(/dsQueryResponse/èskonbwit/ligne[normaliser espas(@Status) = 'Reviv e enstale la'])" /> <xsl:varyab fe-apel="percentStalled" fè chwa="$totalStalled div $dvt_RowCount" /> <!-- Nou defini nou HTML tab la isit la. Mwen emprunt nan kèk estanda SharePoint estil isit la pou fè l' cohérente. Mwen panse ke li pwal lonè chanjman nan dokiman css mondyal an osi byen ke tèm Sur. --> <tab ajè="100%" cellspacing="0" cellpadding="2" mod="fontyè an ki dwat: 1 on jan #C0C0C0; bounda bough fontyè: 1 on jan #C0C0C0; mod fontyè a gòch: on jan; lajè fontyè a gòch: 1; mod fontyè an tèt: on jan; fontyè an tèt lajè: 1;"> <tr> <td fè aliman="sant"> <tab fontyè="1" ajè="100%"> <!-- Pou chak kondisyon sa nou vle trase graf, nou rele a "ShowBar" modèle. Nou pase li: 1. Yon etikèt pou dispit lan. Sa tounen tankou nan sal Lien yon. 2. Pousan an (varyab nan pi wo pase). 3. Reèl jaden non kòd nan lis de la. Sa a pa bezwen pou n konpare etikèt ki ekspozisyon. 4. Valè jaden correspondance pou #3. 5. Total de atik nan kòd estati sa a (pa a gran total de tout estati codes). Li mou yon <tr></tr> ak liy orizontal bar graf. Nou rele modèle sa a pou chak estati kòd nou vle wè. --> <xsl:apèl-modèle fe-apel="ShowBar"> <xsl:ak-param fe-apel="BarDisplayLabel" fè chwa="'Te pwopoze'"/> <xsl:ak-param fe-apel="BarPercent" fè chwa="$percentProposed"/> <xsl:ak-param fe-apel="QueryFilterFieldName" fè chwa="'Estati'"/> <xsl:ak-param fe-apel="QueryFilterFieldValue" fè chwa="'Te pwopoze'"/> <xsl:ak-param fe-apel="TotalItems" fè chwa="$totalProposed"></xsl:ak-param> </xsl:apèl-modèle> <xsl:apèl-modèle fe-apel="ShowBar"> <xsl:ak-param fe-apel="BarDisplayLabel" fè chwa="'Reviv e enstale la'"/> <xsl:ak-param fe-apel="BarPercent" fè chwa="$percentStalled"/> <xsl:ak-param fe-apel="QueryFilterFieldName" fè chwa="'Estati'"/> <xsl:ak-param fe-apel="QueryFilterFieldValue" fè chwa="'Reviv e enstale la'"/> <xsl:ak-param fe-apel="TotalItems" fè chwa="$totalStalled"></xsl:ak-param> </xsl:apèl-modèle> <xsl:apèl-modèle fe-apel="ShowBar"> <xsl:ak-param fe-apel="BarDisplayLabel" fè chwa="'Nan pwosesis la"/> <xsl:ak-param fe-apel="BarPercent" fè chwa="$percentInProcess"/> <xsl:ak-param fe-apel="QueryFilterFieldName" fè chwa="'Estati'"/> <xsl:ak-param fe-apel="QueryFilterFieldValue" fè chwa="'Nan pwosesis la"/> <xsl:ak-param fe-apel="TotalItems" fè chwa="$totalInProcess"></xsl:ak-param> </xsl:apèl-modèle> </tab> </td> </tr> </tab> </xsl:san sa> </xsl:chwazi> </xsl:modèle> <!-- Modèle sa a fè tou sa montre liy endividyèl yo nan graf bar a. Nou pwal pwobableman fè pifò nan ou réglages isit la. --> <xsl:modèle fe-apel="ShowBar"> <xsl:param fe-apel="BarDisplayLabel" /> <!-- etikèt ki pou montre --> <xsl:param fe-apel="BarPercent"/> <!-- Pousan de total. --> <xsl:param fe-apel="QueryFilterFieldName"/> <!-- Te itilize pou depeche ou la requête & oule --> <xsl:param fe-apel="QueryFilterFieldValue"/> <!-- Te itilize pou depeche ou la requête & oule --> <xsl:param fe-apel="TotalItems" /> <!-- total de konte barlabel sa a --> <tr> <!-- Kafe a make tèt li. --> <td klas="madanm-formbody" ajè="30%"> <!-- Sa kap vini ansanm nan deklarasyon yo baze yon kòd requête ki pèmèt nou sèvi ak machin sou yon vi filtrage de data. Fè nou sèvi ak kèk bagay isit la: 1. Nou kapab pase FilterField1 ak FilterValue1 pou yon lis pou koule sou yon kolòn. 2. SharePoint pase yon kle paramètre pou nou, ListUrlDir ki pwen yo pou de lis kont ki DVWP sa a "kouri". Se pat XSL amizan? --> <xsl:tèks rann enfim-pèsistans yap ogmante jiska-ke="Wi"> <![CDATA[<yon href ="]]></xsl:tèks> <xsl:valè-de fè chwa="$ListUrlDir"/> <xsl:tèks rann enfim-pèsistans yap ogmante jiska-ke="Wi"><![CDATA[?FilterField1 =]]></xsl:tèks> <xsl:valè-de fè chwa="$QueryFilterFieldName"/> <xsl:tèks rann enfim-pèsistans yap ogmante jiska-ke="Wi"><![CDATA[&FilterValue1 =]]></xsl:tèks> <xsl:valè-de fè chwa="$QueryFilterFieldValue"/> <xsl:tèks rann enfim-pèsistans yap ogmante jiska-ke="Wi"><![CDATA[">]]></xsl:tèks> <xsl:valè-de fè chwa="$BarDisplayLabel"/> <xsl:tèks rann enfim-pèsistans yap ogmante jiska-ke="Wi"><![CDATA[</yon>]]></xsl:tèks> <!-- Pwochen moso montre ke anpil moun kèk nan fòma a: "(total / % total a)" --> (<xsl:valè-de fè chwa="$TotalItems"/> / <!-- Sa kreye yon bon etikèt pousan pou nou. Mèsi, Microsoft! --> <xsl:apèl-modèle fe-apel="percentformat"> <xsl:ak-param fe-apel="pousan" fè chwa="$BarPercent"/> </xsl:apèl-modèle>) </td> <!-- A la fen, fè sikile yon <td> etikèt kafe a pou tèt li.--> <td> <tab cellpadding="0" cellspacing="0" fontyè="0" ajè="{bò kote($BarPercent * 100)+1}%"> <tr bgcolor="Rouj"> <xsl:tèks rann enfim-pèsistans yap ogmante jiska-ke="Wi"><![CDATA[&nbsp;]]></xsl:tèks> </tr> </tab> </td> </tr> </xsl:modèle> <!-- Sa ap pran ki soti dirèkteman nan kèk XSL mwen te jwenn nan yon Madanm modèle. --> <xsl:modèle fe-apel="percentformat"> <xsl:param fe-apel="pousan"/> <xsl:chwazi> <xsl:Kile tès="fòma-nombre($pousan, '#,##0%;-#,##0%')= 'NaN'">0%</xsl:Kile> <xsl:san sa> <xsl:valè-de fè chwa="fòma-nombre($pousan, '#,##0%;-#,##0%')" /> </xsl:san sa> </xsl:chwazi> </xsl:modèle> </xsl:stylesheet>

Rezilta:

A XSL de pi wo pase génère graf sa a:

imaj

Sèvi ak machin sou de data klike sou kòd estati a:

imaj

Conclusion lide:

Ka sa Être Générale?

Mwen renmen sa a graphiques konsèp, Men, mwen rayi Lefèt ke mwen gen pou ale, fè anpil men-codage. Mwen te gen vin sove yon ti pou konnen si li kapab fè généralisée ak mwen menm optimis, Men, mwen menm tou yon ti kras pèrèz ke ka gen yon mi an blòk lòt kote nan chemen sa yo ki pa vle ofwi okenn travay ki alantou. Si yon moun gen bon lide sou sa, Tanpri fè yon nòt nan kòmantè yo ou e-mail m.

Graphiques vètikal:

Sa se yon graf kouche plat bar. Sa se sètènman posib pou kreye yon graf vètikal. Nou sèlman bezwen chanje HTML a. Mwen pwal kòmanse a menm jan an tou: Kreye yon reprezantasyon HTML yon graf vètikal bar, lè sa a evalye kijan pou li ale sa via XSL. Si nenpòt moun ta enterese nan sa, Mwen te kapab convaincu kou l' yo ak travay sou kinks yo. Si yon moun te deja fè sa, tanpri kite m 'konnen epi mwen pral kè kontan ap mennen nan blog ou a 🙂

Mwen panse ke defi ak yon graf vètikal se étiquettes yo pou graf a sont pi difisil pou yo jere, Men, wè pa wè pa enposib.

Jaden non Gotcha:

Genyen anviwon de sa ki gen pou chèche pou ak non jaden ou.

Premye, yon non jaden ak yon espas ki bay pou sove nan XSL a. Sa pwal pwobableman vinn yon zafè isit la:

        <xsl:varyab fe-apel="totalProposed" 
fè chwa="konte(/dsQueryResponse/èskonbwit/ligne[normaliser espas(@Status) = 'Te pwopoze'])" />

Si ou "estati" Kolòn aktyèlman rele "stati kòd" Lè sa a ou bezwen référence li kòm "Status_x0020_Code":

   <xsl:varyab fe-apel="totalProposed" 
fè chwa="konte(/dsQueryResponse/èskonbwit/ligne[normaliser espas(@Status_x0020_Code) = 'Te pwopoze'])" />

Dezyèm, mwen se yon ti kras floue sou sa, Men, ou tou bezwen an alèt pou chanjman non jaden. Si ou non jaden nou, "estati kòd" Et puis plus sou, bay yon lòt non l' pou "AFE estati", "entèn non" pa chanje. A entèn toujou y' a rele "stati kòd" e se pou référencé kòm "Status_x0020_Code". "Lòt resous" lyen ka ede onde Et korije sa a jan de pwoblèm.

Osijè de sa koulè:

Mwen pran "wouj" Paske, Bondye vle pou m' nan moman. Li pa ta yon gwo kontra pou montre diferan koulè ki te ekri nan liv bay plis ke senpleman yon izyèl dekri teren anpil, Men, pou yon bon) ke bay tou. Pa ekzanp, Si pousantaj "a" AFE a se > 10% Lè sa a montre l' wouj, san sa montre li an nwa. Sèvi ak <xsl:chwazi> pou reyalize sa.

Lòt resous yo:

Benediksyon pou transformation!

<fin />

Vous pou m' blog!

SharePoint pa bay “Ki moun ki gen aksè” Rapò

AJOU 01/28/08: Codeplex pwojè sa yo adrese bagay sa a: http://www.codeplex.com/AccessChecker. M pa abitye li, Men, li sanble prometteur si sa se yon pwoblèm ou bezwen pale nan anviwònman ou.

AJOU 11/13/08: Joel Oleson a kanpe nan yon pòs trè byen sou pi gwo sekirite gestion kesyon an isit la: http://www.sharepointjoel.com/Lists/Posts/Post.aspx?Lis = 0cd1a63d % 2D183c % 2D4fc2% 2 D 8320% 2Dba5369008acb&DIDANTITE = 113. Li lye pou yon bann lòt resous itil.

Foròm utilisateurs Et kliyan souvan poze kesyon sou liy sa yo: "Ki jan fè mwen jenere yon lis tout moun ak aksè a yon kote ki gen" ou "ki kapab mwen otomatikman alert tout itilizatè ak aksè pou lis apropo de changman ki te fè lis?"

Se pa deyò a solisyon bwat pou sa. Si ou panse osijè de sa pou yon ti moman, sa twò difisil pou konprann poutèt.

SharePoint sekirite anpil likid. Genyen omwen kat gwo kategori moun:

  • Utilisateurs anonim.
  • Utilisateurs SharePoint Et gwoup yo.
  • Utilisateurs anyè aktif.
  • Fòm Fonction D' (FBA) utilisateurs.

Fleksibilite a, ki nan yon pèspektiv sekirite., sit SharePoint bay okenn va dramatikman diferan de lòt. Pou jenere yon rapò lis dwa ak, gen bezwen pou rann kont jan sit la sécurisé, requête miltip référentiels wofil diferan kap itilize li an. Lè sa a pwezante li a la mad yon bon. Sa se yon pwoblèm ki difisil pou rezoud générique.

Gen pou jan sont òganizasyon yo wè ak sa a? Mwen ta renmen tande ou nan kòmantè oubyen mel.

</fen>