Kategooria Arhiiv: SharePointi areng

Hoiduge olulised muutused ItemStyle.xsl

Ma töötasin koos ItemStyle.xsl välimuse sisupäringu veebiosa ja lõunasöögi ajal õigus, Tegin breaking XSL-i muutmine. Ma ei mõistnud seda, Aga see oli kaugeleulatuv mõju kogu saidikogumi. Ma läksin lõunale ja minu tagastamisel, märganud selle teate ilmumist hunnik kohti:

Ei saa kuvada selle veebiosa. Probleemi tõrkeotsinguks, Avage see veebileht Windows SharePoint Services ühilduvat HTML-redaktorit nagu Microsoft Office SharePoint Designer. Kui probleem ei lahene, pöörduge oma veebiserveri administraatori poole.

Ma süüdistas klient (mitte aru veel, et see oli minu süü selles kohas) kuid lõpuks märkas visual studio intellisense tehti hoiatus mulle et mul moonutatud XSL. Ma parandatud ja kõik alustas tööd.

Olge darned ItemStyle.xsl töötamisel (ja globaalne XSL fail) — Breaking neid mõjutab palju esemeid saidikogumi.

<lõpp />

Kuva sisu päringutulemite osa Web võrgustikus / Tabel

Ülevaade ja eesmärk

Karbist välja, MOSS’ Sisu sisupäringu veebiosa (CQWP) kuvab loendi kujul tulemusi, sarnane Otsingu tulemused. Samuti on võimalik kuvada tulemused võrgustikuvormingus (St. HTML tabeli valmisvormingut). Koordinaatvõrgu vormingud on mõningatel juhtudel parem. Ma kirjeldada, kuidas saavutada kõnealuse mõju käesolevas artiklis.

Äri stsenaariumi

Olen töötanud koos kliendiga linna ettevõttesiseseks MOSS levikuga. Oleme loonud oma taksonoomia selliselt, et projektid on esimese klassi kodanikud hierarhia ning on oma kõrgema taseme saidi. Projektijuhid haldavad singleton projekti kokkuvõtlik teave, nagu pealkiri, eelarve, oodatav Valmimisaeg, ülejäänud eelarve ja muude kokkuvõtte tüüp. Mida "singleton" Ma mõtlen kohandatud SharePointi loend sisaldada ainult üht kaubanimetust garanteeritud. Lihtsustatult, See näeb välja selline:

Pilt

Tehniline lähenemine on palju sama, nagu on kirjeldatud Siin (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). Et CQWP kasutab XSL-transformatsiooni paisata HTML brauseri renderdamiseks.

Ma alati kujutlevad tulemus enne sukeldudes XSL-i, sest XSL on õudusunenägu. Siin on minu soovitud tulemust:

Pilt

HTML niimoodi loob tulemuse:

<HTML>
 <keha>
 <keskus>
 <Tabel ääris= 1>

<!-- Sildid-->
 <TR bgcolor= sinine>
 <TD><font värv= valge><b>Projekti nimi</b></font></TD>
 <TD joondamine= õigus><font värv= valge><b>Lõpetatud kuupäev</b></font></TD>
 <TD joondamine= õigus><font värv= valge><b>Eelarve</b></font></TD>
 <TD joondamine= õigus><font värv= valge><b>Tegelik kulu</b></font></TD>
 <TD><font värv= valge><b>Üldist seisundit</b></font></TD>
 </TR>

<TR>
 <TD>Uuesti traat arvuti tuba.</TD>
 <TD joondamine= õigus>02/01/08</TD>
 <TD joondamine= õigus>22,500.00</TD>
 <TD joondamine= õigus>19,000.00</TD>
 <TD>Pooleli</TD>
 </TR>

<TR>
 <TD>Sätte servereid SQL Upgrade</TD>
 <TD joondamine= õigus>04/01/08</TD>
 <TD joondamine= õigus>7,500.00</TD>
 <TD joondamine= õigus>0.00</TD>
 <TD>Planeeritud</TD>
 </TR>

</Tabel>
 </keskus>
 </keha>
</HTML>

Lähenemine

Järgmiste juhiste abil luua võrgustiku:

  1. Kindlaks määrata võrgu komponendid (read/veerud).
  2. Määrata ja luua vajalikud saidiveergudest.
  3. Loo alasaidid projektide ja singleton nimekirjad.
  4. Nende CQWP lisamiseks veebilehele ja konfigureerida otsima oma nimekirjad.
  5. CQWP's XML tarima täiendavate veergude muutmine.
  6. Muuda XSL genereerimiseks andmetabeli.

Ma lähen, et keskenduda number kuus. Numbrid üks läbi neli on sirgjooneliselt ja midagi, mis tahes CQWP kasutaja on juba teinud. Number viis on olnud hästi dokumenteeritud teised sealhulgas ammendav screen-shot koormaga artiklist MSDN Siin (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) ja Heather Solomon's blog Siin (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).

Mutrid ja poldid

Alustada ja rakendada juhiseid üks 5 seisuga MSDN-i dokumentatsiooni ja Heather Solomon artikli.

Sel hetkel, Olen lisanud oma CQWP lehele ja on teil oma <CommonViewFields> konfigureeritud vastavalt vajadusele.

Pärast tavalist tegevust, Ma saan neid vahepealseid tulemusi:

1. Luua sisutüübi, mallipõhise kohandatud loendi sisutüübi ja kaks objektidele. Siin on sisu tüüp:

Pilt

Siin on saidi struktuur:

Pilt

2. Lisage selle CQWP pärast loomist minu projekti alamsaidid ja singleton projekti kokkuvõtlik nimekirjad:

Pilt

3. Soovin kaudu täiendava teabe lisamiseks ning <CommonViewFields>:

        <kinnisvara Nimi="CommonViewFields" tüüp="stringi">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</kinnisvara>

Teadmiseks, et pidin hoidma kõik atribuudiväljad ühel real või see ei tööta (CQWP oleks mulle, et päring pole üksusi tagastanud).

4. Sel hetkel, Me oleme valmis minema kaugemale MSDN artikli ja flip üle Heather Solomon artikli. Tema juhiste alustades asuvaid samm #5 luua ka kohandatud / unghosted versioon ItemStyle.xsl. Jälgin Heather's nõu, läbi step up 11 ja saada neid vahepealseid tulemusi:

4.1: Nimi minu XSL-malli järgmiselt.:

<XSL-i:malli nimi = "Grid" vasta = "rida[@Style = "Grid"]" mode = "itemstyle">

Ma ka pisut muuta tema soovitas <XSL-i:puhul iga …> lisades on <br /> Tag pakkuda cleaner loetelu:

    <XSL-i:puhul iga Valige="@*">
      P:<XSL-i:väärtuse kohta Valige="Nimi()" /><br/>
    </XSL-i:puhul iga>

4.2: Selle veebiosa muutmine, Mine välimus ja valige minu "Grid" stiil:

Pilt

Muudatuse rakendamiseks ja siin on tulemus:

Pilt

Näeme, et et väljad tahame (Projekti nimi, kulu, olek, jne) on olemas, me kasutame kui me paisata HTML. Mitte ainult, et, Aga näeme nimed, millega me viide need veerud XSL-i. Näiteks, me viide projekti olek on "Project_x005F_x0020_Name".

Sel hetkel, Me väljuvad Heather's blog ja need giants õlad, Lisan oma natuke.

ContentQueryMain.xsl

MÄRKUS: Kui muudate nii ContentQueryMain.xsl kui ka ItemStyle.xsl, sa pead kontrollima neid faile tagasi, enne kui te näha tehtud muudatuste toimet.

Koordinaatvõrgu tegemise eesmärgil, MOSS kasutab kahte erinevat XSL-failides jõuda tulemusteni, mida näeme, on CQWP. Genereerida väljundi eelmise bit, oleme muutnud ItemStyle.xsl. MOSS tegelikult kasutab teise XSL fail, ContentQueryMain.xsl koos ItemStyle.xsl luua oma HTML-. Nagu nimigi, ContentQueryMain.xsl on peamine"" XSL-i, mis kontrollib üldist voolu tõlge. Ta kordab kaudu leitud esemed ja läbib neid ükshaaval malle ItemStyle.xsl. Me muuta ItemStyle.xsl genereerimiseks Ava <Tabel> Tag enne kiirgavad esimese rea andmeid ja sulgemine <Tabel> pärast viimase rea kiirgavad tag. Selle saavutamiseks, ContentQueryMain.xsl on muudetud läbida kaks parameetrid meie "grid" Mall ItemStyle.xsl, "viimases row" ja "praegune rida". ItemStyle.xsl kõnealuseid mehhanisme tingimuslikult paisata vajalikud Sildid.

Heather Saalomoni tehnikas, me leida ContentQueryMain.xsl. Hotell asub samas kohas kui ItemStyle.xsl. See pilt peaks aitama:

Pilt

Meil on vaja teha järgmised muudatused:

  • XSL-malli muutmine, "CallItemTemplate" mis tegelikult tugineb meie Grid malli ItemStyle.xsl. Me läheb kahest parameetrist Grid malli nii, et ta on tingimuslikult genereerida avamise ja sulgemise andmed <Tabel> Sildid.
  • Muuda teine natuke ContentQueryMain.xsl, mis kutsub "CallItemTemplate" edasi "LastRow" parameeter nii et LastRow võib edasi meie Grid Mall.

Leidke malli nimeks "OuterTemplate.CallItemTemplate" määratud stringi:

  <XSL-i:Mall Nimi="OuterTemplate.CallItemTemplate">

Asendada kogu malli järgmiselt.:

  <XSL-i:Mall Nimi="OuterTemplate.CallItemTemplate">
    <XSL-i:Param Nimi="CurPosition" />

    <!--
      Lisa "LastRow" parameeter.
      Me kasutada vaid siis, kui kauba laad läbima on "Võrgustik".
    -->
    <XSL-i:Param Nimi="LastRow" />

    <XSL-i:Valige>
      <XSL-i:Kui test="@Style = 'NewsRollUpItem'">
        <XSL-i:kehtivad Blanketid Valige="." režiim="itemstyle">
          <XSL-i:koos param Nimi="EditMode" Valige="$cbq_iseditmode" />
        </XSL-i:kehtivad Blanketid>
      </XSL-i:Kui>
      <XSL-i:Kui test="@Style = 'NewsBigItem'">
        <XSL-i:kehtivad Blanketid Valige="." režiim="itemstyle">
          <XSL-i:koos param Nimi="CurPos" Valige="$CurPosition" />
        </XSL-i:kehtivad Blanketid>
      </XSL-i:Kui>
      <XSL-i:Kui test="@Style = 'NewsCategoryItem'">
        <XSL-i:kehtivad Blanketid Valige="." režiim="itemstyle">
          <XSL-i:koos param Nimi="CurPos" Valige="$CurPosition" />
        </XSL-i:kehtivad Blanketid>
      </XSL-i:Kui>

      <!--
              Liigu hetkeolukorda ja lastrow Grid itemstyle.xsl Mall.
              ItemStyle.xsl kasutab seda paisata avamaal ja sulgemine <Tabel> Sildid.
      -->
      <XSL-i:Kui test="@Style = "Võrgu"">
        <XSL-i:kehtivad Blanketid Valige="." režiim="itemstyle">
          <XSL-i:koos param Nimi="CurPos" Valige="$CurPosition" />
          <XSL-i:koos param Nimi="Kesta" Valige="$LastRow" />
        </XSL-i:kehtivad Blanketid>
      </XSL-i:Kui>

      <XSL-i:muidu>
        <XSL-i:kehtivad Blanketid Valige="." režiim="itemstyle">
        </XSL-i:kehtivad Blanketid>
      </XSL-i:muidu>
    </XSL-i:Valige>
  </XSL-i:Mall>

Kommentaarid kirjeldavad muudatuste eesmärk.

Muidugi, "OuterTemplate.CallItemTemplate" nimetatakse ise mõnest muust mallist. Leidke malli tekstistring otsides:

<XSL-i:Mall Nimi="OuterTemplate.Body">

Sirvige OuterTemplate.Body juhiseid ja sisestada LastRow parameeter järgmiselt (näidatud kaldkirjas kommentaar):

<XSL-i:kõne-Mall Nimi="OuterTemplate.CallItemTemplate">
  <XSL-i:koos param Nimi="CurPosition" Valige="$CurPosition" />
  <!-- LastRow parameetri lisada. -->
  <XSL-i:koos param Nimi="LastRow" Valige="$LastRow"/>
</XSL-i:kõne-Mall>

Pärast kõike seda, Meil on lõpuks asjad nii, et meie ItemStyle.xsl võivad paisata õigesti seadistatud <Tabel> Sildid õiges kohas.

ItemStyle.Xsl

MÄRKUS: Uuesti, Kontrollige ItemStyle.xsl pärast muutuste tegemist, et vaadata nende muutuste mõju.

Meil on kaks ülesannet siin:

  • Kogu koordinaatvõrgu malli asendada. Te saate kopeeri/kleebi alt.
  • Lisada mõned mumbo jumbo malli määratlusest, mis võimaldab "formatcurrency" malli tööle. (Võiks öelda, et mul on hõre käepide XSL).

Esimese, ItemStyle.xsl ülaosas, Lisa see rida:

  <!-- Mõned mumbo jumbo, mis võimaldab meil Kuva USA. valuuta. -->
  <XSL-i:kümnend-vormingus Nimi="töötajad" kohaline="D" />

  <XSL-i:Mall Nimi="Vaikimisi" vaste="*" režiim="itemstyle">

Märkus et lisasin ta vahetult enne selle <XSL-i:malli nimi = "vaikimisi" …> määratlus.

Järgmine, minna tagasi meie Grid malli. Kogu koordinaatvõrgu malli asendada alljärgnev kood. Põhjalikult kommenteeritud, Aga ärge kartke emaili mulle või kommenteerida minu blogi, kui teil on küsimusi.

  <XSL-i:Mall Nimi="Grid" vaste="Rida[@Style = "Võrgu"]" režiim="itemstyle">

    <!--
      ContentMain.xsl läbib CurPos ja Viimane.
      Me kasutame neid tinglikult paisata avamaal ja sulgemine <Tabel> Sildid.
    -->
    <XSL-i:Param Nimi="CurPos" />
    <XSL-i:Param Nimi="Kesta" />

    <!-- Järgmised muutujad on ümberehitamata standard ItemStyle.xsl -->
    <XSL-i:muutuja Nimi="SafeImageUrl">
      <XSL-i:kõne-Mall Nimi="OuterTemplate.GetSafeStaticUrl">
        <XSL-i:koos param Nimi="UrlColumnName" Valige="'ImageUrl'"/>
      </XSL-i:kõne-Mall>
    </XSL-i:muutuja>
    <XSL-i:muutuja Nimi="SafeLinkUrl">
      <XSL-i:kõne-Mall Nimi="OuterTemplate.GetSafeLink">
        <XSL-i:koos param Nimi="UrlColumnName" Valige="'LinkUrl'"/>
      </XSL-i:kõne-Mall>
    </XSL-i:muutuja>
    <XSL-i:muutuja Nimi="DisplayTitle">
      <XSL-i:kõne-Mall Nimi="OuterTemplate.GetTitle">
        <XSL-i:koos param Nimi="Pealkiri" Valige="@Title"/>
        <XSL-i:koos param Nimi="UrlColumnName" Valige="'LinkUrl'"/>
      </XSL-i:kõne-Mall>
    </XSL-i:muutuja>
    <XSL-i:muutuja Nimi="LinkTarget">
      <XSL-i:Kui test="@OpenInNewWindow = "True"" >_blank</XSL-i:Kui>
    </XSL-i:muutuja>

    <!--
      Siin me defineerime muutuja, "tableStart".  See sisaldab HTML, mida me kasutame määratleda tabelis kui ka veerusilte avamine.  Pange tähele, et kui CurPos = 1, See sisaldab HTML CDATA tag.
      Muidu, jääb tühjaks.

      TableStart väärtus on emited, iga kord, kui ItemStyle on nn ContentQueryMain.xsl kaudu.
    -->
    <XSL-i:muutuja Nimi="tableStart">
      <XSL-i:Kui test="$CurPos = 1">
        <![CDATA[
        <tabeli äärise = 1>
          <TR bgcolor = "blue">
            <TD><fondi värv = valge><b>Projekti nimi</b></font></TD>
            <TD joondada = "paremale"><fondi värv = valge><b>Lõpetatud kuupäev</b></font></TD>
            <TD joondada = "paremale"><fondi värv = valge><b>Eelarve</b></font></TD>
            <TD joondada = "paremale"><fondi värv = valge><b>Tegelik kulu</b></font></TD>
            <TD><fondi värv = valge><b>Üldist seisundit</b></font></TD>
          </TR>
        ]]>
      </XSL-i:Kui>
    </XSL-i:muutuja>

    <!--
      Teine muutuja, tableEnd lihtsalt määratleb sulgemine tabeli silt.

      Nagu tableStart, See on alati emited.  Seetõttu selle väärtuseks määrati tingimisi põhineb kas me oleme läbinud viimase rea ContentQueryMain.xsl.
    -->
    <XSL-i:muutuja Nimi="tableEnd">
      <XSL-i:Kui test="$CurPos = $Last">
        <![CDATA[ </Tabel> ]]>
      </XSL-i:Kui>
    </XSL-i:muutuja>

    <!--
      Alati paisata tableStart sisu.  Kui see ei ole meile ContentQueryMain.xsl möödusid esimeses reas, siis teame, et selle väärtus olla tühi.

      Keela väljund põgenedes, sest kuna tableStart see ei ole tühi, See hõlmab tegelikku HTML, mida me tahame brauseris renderdada.  Kui me ei ütle XSL parserit blokeerida väljund põgenedes, See loob asju"&lt;Tabel&gt;" selle asemel on"<Tabel>".
    -->
    <XSL-i:väärtuse kohta Valige="$tableStart" Keela väljund põgenedes="Jah"/>


    <TR>
      <!--
      P: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-i:väärtuse kohta Valige="@Project_x005F_x0020_Name"/>
      </TD>

      <TD joondamine="paremale">
        <XSL-i:väärtuse kohta Valige="@Project_x005F_x0020_End_x005F_x0020_Date"/>
      </TD>

      <TD joondamine="paremale">
        <XSL-i:kõne-Mall Nimi="formatcurrency">
          <XSL-i:koos param Nimi="väärtus" 
Valige="@Project_x005F_x0020_Budget"></XSL-i:koos param> </XSL-i:kõne-Mall> </TD> <TD joondamine="paremale"> <XSL-i:kõne-Mall Nimi="formatcurrency"> <XSL-i:koos param Nimi="väärtus" Valige="@Project_x005F_x0020_Expenses">
</XSL-i:koos param> </XSL-i:kõne-Mall> </TD> <TD> <XSL-i:väärtuse kohta Valige="@Project_x005F_x0020_Status"/> </TD> <!-- Kõik järgmised on kommenteerinud välja selgitada asju. Aga, tagasi tuua ja see värk on <TD> et näha selle mõju. --> <!-- <div id = "linkitem" klassi = "kirje"> <XSL-i:Kui katse = "stringi pikkus($SafeImageUrl) != 0 "> <div klassi = "pildi ala vasakule"> <href = "{$SafeLinkUrl}" Target = "{$LinkTarget}"> <img klassi = "pildi-kindla laiusega" src = "{$SafeImageUrl}"
alt = "{@ImageUrlAltText}"/> </a> </DIV> </XSL-i:Kui> <div klassi = "Lingiüksust"> <XSL-i:kõne-Mall
Name="OuterTemplate.CallPresenceStatusIconTemplate"/> <href = "{$SafeLinkUrl}"
Target = "{$LinkTarget}" pealkiri = "{@LinkToolTip}"> <XSL-i:väärtuse kohta märkige = "$DisXSL-iyTitle" /> </a> <div klassi = "kirjeldus"> <XSL-i:väärtust, select="@Description" /> </DIV> </DIV> </DIV>
--> </TR> <!-- Paisata sulgemine tabeli silt. Kui me ei ole viimases row, see jääb tühjaks. --> <XSL-i:väärtuse kohta Valige="$tableEnd" Keela väljund põgenedes="Jah"/> </XSL-i:Mall> <XSL-i:Mall Nimi="formatcurrency"> <XSL-i:Param Nimi="väärtus" Valige="0" /> <XSL-i:väärtuse kohta Valige='Vorminda numbrit($väärtus, "$DDD,DDD,DDD.DD", "Personal")' /> </XSL-i:Mall>

Standard WSS/MOSS andmesisestusekraanideks ei toeta kuhjuvate tilk-mõõnad (või muud intra-suhtlemist)

VÄRSKENDUS (04/2008): See suurepärane blogi näitab head javascript põhinev lähenemine sellele probleemile: http://webborg.blogspot.com/2008/04/add-functions-and-events-to-sharepoint.html

UPDATE II: (04/2008): See blogi paljulubav samuti: http://www.cleverworkarounds.com/2008/03/13/free-mosswss-2007-web-part-hide-controls-via-javascript/

Mitu korda nädalas, kui mitte iga päev, foorumi kasutajad kirjeldama nõude, et tavaliselt tuleb transpordiministrid kuhjuvate tilk mõõnad. Näiteks, Mul on kaks ripploendi juhtelemente:

  • Nimekiri USA. riikide
  • Nimekiri USA. linnad.

Vastutav UI osutajana, Me tahame seda niimoodi toimivad:

  • Paul valib USA. riik rippmenüüst.
  • See põhjustab rippmenüü filtreerida ainult neid linnu, mis kuuluvad valitud maakonna linnad.
  • Paul valib linna filtreeritud loendist.

Ei toetata out-of-the-box Koputuse. Tegelikult, ei toetata OOB igasuguse otsese intra-vormi edastamine. Siia kuuluvad programmiliselt peidus/lubamine/keelamine väljade väli muutustega mujal vormil.

-Võimalikud lahendused ja nende kirjeldamiseks artikli tegelik eesmärk on võimalusi nagu ma tean neid:

  1. Arendada kohandatud veerutüüp. Custom-veerg-arendaja, teil on täielik kontroll selle üle maailma"" selle kohandatud veeru. Saate rakendada kuhjuvate rippmenüü nii.
  2. Võite kasutada töövoo. Mõnel juhul, soovite automaatselt määrata mõne muu välja väärtuse väljale väärtuse. Sel juhul, te tavaliselt proovida kasutada arvutatud veerus, kuid mõned korda, See lihtsalt ei saa tööd teha. SharePoint Designeri töövoo on suhteliselt hallata-friendly alternatiiv koodi ja visual studio kukkumine. Kui te lähete seda teed, olema teadlikud hõlmatud küsimust käesoleva artikli (http://paulgalvin.spaces.live.com/blog/cns!CC1EDB3DAA9B8AA!405.entry).
  3. Sündmuseohjurite: Nagu töövoog, See on pärast asjaolu lahendus. Sündmuseohjur on .NET-komplekti (C#, VB.NET) Millised SharePointi annab juhtimise. Arendate objektil loendi andmetele juurdepääsu (ja kogu objektimudel) ja teha kõik vajalik arvutus.
  4. SharePoint Designeri abil saate luua kohandatud Osavõtuavaldusi. Mul puudub otsene kogemus sellise lähenemisega, but I hear they are doing good things with NewForm.aspx these days 🙂
  5. Rulli oma ASP.NET andmete kande funktsioon (eraldiseisva veebilehe või veebiosa) ja mis selle asemel kasutada.

Kas keegi teab muid ja/või parem Valikud, Palun postitage kommentaar ja ma ajakohastavad seda postitust keha.

<lõpp />

Technorati Tags:

Luua SharePointi riba graafikud

Ülevaade:

(VÄRSKENDUS 12/04/07: Lisatud veel üks huvitav ressurss linkimiseks teise blogi, mis on suunatud väga huvitav veebiosa kaudu otsas)

See blogi kirjeldatakse loomist tulpdiagrammil SharePointis. See toimib WSS ja SAMBLA keskkondades, kui see sõltub ainult Andmevaate veebiosa.

On üldine lähenemisviis:

  1. Loo loend või teek, mis sisaldab graafikule kanda andmeid.
  2. Koht seostatud dokumenditeek / kohandatud lehele lisamiseks nimekirja ja muuta andmeid Loendivaate veebiosa (DVWP).
  3. Muuta ning DVWP XSL genereerida HTML, kus kuvatakse graafikuna.

Äri stsenaariumi / Seadistamine:

Olen loonud kohandatud loendi standardi pealkiri veeru ja ühe tulba, "Staatus". See mudelid (väga lihtsustatult) Kulu luba"" stsenaarium, kus pealkiri on projekti ja olek väärtus loendist:

  • Kavandatud
  • Protsessis
  • Seiskunud

Eesmärk on toota interaktiivset horisontaalne Baar graafik, mis näitab nende olekukoodid.

On asustatud nimekirja ja näeb välja selline:

Pilt

Andmevaate veebiosa loomine:

Luua ka DVWP, lisades kohandatud loendi leht (saidi lehe minu puhul) ja järgige Siin (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!395.entry).

Lisaks lihtsalt luua ning DVWP, Samuti peame seada atribuudi kutsungi kõik saadaval ridade kuvamiseks. Minu jaoks, See näeb välja selline:

Pilt

Sel hetkel, Ma alati lähedal ühtse Programmdokumendi ja brauseri. Ma siis uuesti avada brauseriga leht. See väldib kogemata mucking kuni lehe osa veebivaade.

Muuda XSLT:

Nüüd on aeg muuta XSLT.

Ma alati kasutada visual Studiot selle. (Vt Siin tähtis teade intellisense, mis aitab teil palju jaoks).

Ma luua tühja projekti nelja uusi faile (asendades sõnad "originaal" ja "uus" vastavalt vajadusele):

  • Original.XSLT
  • New.XSLT
  • Algne Params.xml
  • Uus Params.xml

Minu puhul, See näeb välja selline:

Pilt

Selle veebiosa muutmine ja kopeerida params ja XSL algse"" versioon Visual Studio.

Siin on tekitada XSL muuta saame tagasi DVWP päringu graafikuna renderdamine HTML tulemuste.

Sel eesmärgil, See aitab esmalt kaaluda, enne kui me saa segaduses mida tuntakse "XSL" hullumeelsus, mida HTML peaks välja nägema. (Selge, Järgmine on lihtsalt näide; Ärge tippige see või copy/paste visual studio. Mul pakkuda täis puhuda, alustades punkti selle eest hiljem ka kirjutada üles). Proovi graafik renderdatakse nagu HTML, kohe pärast iga:

Sample Ribagraafiku

Vastava HTML:

<HTML>
<keha>
<keskus>
<Tabel Laius ≥ 80%>
<TR><TD><keskus>Horisontaalne tulpdiagramm</TD></TR>
<TR>
<TD joondada = "center">
<tabeli äärise = "1" laius = 80%>
<TR>
<TD laius = 10%>Avatud</TD>
<TD><Tabel cellpadding ="0" cellspacing ="0" Border = 0 laius ≥ 50%><TR bgcolor = punane><TD>&nbsp;</TD></TR></Tabel></TD>
</TR>
<TR>
<TD laius = 10%>Suletud</TD>
<TD><Tabel cellpadding ="0" cellspacing ="0" Border = 0 width = 25%><TR bgcolor = punane><TD>&nbsp;</TD></TR></Tabel></TD>
</TR>
<TR>
<TD laius = 10%>Seiskunud</TD>
<TD><Tabel cellpadding ="0" cellspacing ="0" Border = 0 width = 25%><TR bgcolor = punane><TD>&nbsp;</TD></TR></Tabel></TD>
</TR>
</Tabel>
</TD>
</TR>
</Tabel>
</keha>
</HTML>

Ma kasutasin surnud lihtne lähenemine loomine minu baarid seadmisega järjest "punaseks" taustavärv.

Et Take-Away on see: Aasta lõpus, Kõik me teeme on luua HTML ridade ja veergudega.

Malli XSLT:

I kopeeritud XSLT, mis tekitab horisontaalse tulpdiagramm. See on üsna hästi kommenteerinud nii, et ma ei lisa palju siin välja arvatud need märkmed:

  • Hakkasin vaike-XSL SharePoint Designeri andis mulle selle DVWP loomisel.
  • Mul oli võimalus lõigata see alates ühtse Programmdokumendi 's 657 read 166 read.
  • Ma ei jändama parameetrite XML faili (mis on eraldatud ka XSL ja sa tead mida ma mõtlen, kui soovite muuta DVWP, ise; on kaks faili, saate muuta). Aga, selleks, et lihtsustada, Ma tegin peaaegu kõik neist eemaldamine XSL-i. See tähendab, et kui sa tahad teha kõnealuste parameetrite kasutamine, peate oma muutuja määratluste XSL-i uuesti lisada. See lihtne kuna teil algne XSL muutuja määratluste visual studio projektis.
  • Sa peaks olema võimalik kopeerida ja kleepida otse visual studio projekti. Seejärel, Eemaldage mu kõnesid ja sisestage oma kõned "ShowBar".
  • Töid luues süvitsiminek on <a href> Nagu see: http://server/List?FilterField1=fieldname&FilterValue1=actualFilterValue. See meetod võib olla väärtuslik teistes kontekstides. Algul, Arvasin, et ma vajaks vasta keerulisem vormingule: http://server/List/AllItems.aspx?View={guid}&FilterField1=blah&FilterValue1=blah, Minu keskkond seda ei vaja. Listi URL on möödunud meile SharePoint, nii et see on üsna lihtne üldistada.

Siin on:

<XSL-i:laadileht versioon="1.0" välista-tulemus-eesliited="RS z o s ddwrt dt msxsl" 
xmlns:msxsl="urn:schemas-microsoft-com:XSLT-d" xmlns:XSL-i="http://www.w3.org/1999/XSL/Transform"
xmlns:SharePointi="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:o="urn:schemas-microsoft-com:Office" xmlns:s="UUID:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"
xmlns:DT="UUID:C2F41010-65B3 - 11d 1-A29F-00AA00C14882" xmlns:RS="urn:schemas-microsoft-com:Reahulk" xmlns:z="#RowsetSchema"
xmlns:ddwrt2="urn:Pealeht:sisemine"
> <XSL-i:väljund meetod="HTML" taane="Ei" /> <XSL-i:kümnend-vormingus NaN="" /> <XSL-i:Param Nimi="ListUrlDir"></XSL-i:Param> <!-- Ma vajan seda toetada drill-down. --> <XSL-i:Mall vaste="/" xmlns:SharePointi="Microsoft.SharePoint.WebControls"
xmlns:__designer=http://schemas.microsoft.com/WebParts/v2/DataView/designer xmlns:ASP="http://schemas.microsoft.com/ASPNET/20"
> <XSL-i:muutuja Nimi="dvt_StyleName">Tabel</XSL-i:muutuja> <XSL-i:muutuja Nimi="Read" Valige="/dsQueryResponse/ridu/rida" /> <XSL-i:muutuja Nimi="dvt_RowCount" Valige="Krahv($Read)" /> <XSL-i:muutuja Nimi="IsEmpty" Valige="$dvt_RowCount = 0" /> <XSL-i:muutuja Nimi="dvt_IsEmpty" Valige="$dvt_RowCount = 0" /> <XSL-i:Valige> <XSL-i:Kui test="$dvt_IsEmpty"> Andmeid pole graafik!<br/> </XSL-i:Kui> <XSL-i:muidu> <!-- Huvitavat kraami algab siit. Meil on vaja määratleda iga rea muutujate paari graafik: Kokku arvuliselt protsent kogusummast. --> <XSL-i:muutuja Nimi="totalProposed" Valige="Krahv(/dsQueryResponse/ridu/rida[normaliseerida ruumi(@Status) = "Ettepanek"])" /> <XSL-i:muutuja Nimi="percentProposed" Valige="$totalProposed div $dvt_RowCount" /> <XSL-i:muutuja Nimi="totalInProcess" Valige="Krahv(/dsQueryResponse/ridu/rida[normaliseerida ruumi(@Status) = "Pooleli"])" /> <XSL-i:muutuja Nimi="percentInProcess" Valige="$totalInProcess div $dvt_RowCount" /> <XSL-i:muutuja Nimi="totalStalled" Valige="Krahv(/dsQueryResponse/ridu/rida[normaliseerida ruumi(@Status) = "Seiskunud"])" /> <XSL-i:muutuja Nimi="percentStalled" Valige="$totalStalled div $dvt_RowCount" /> <!-- Meie HTML tabeli siit määratleme. Ma olen laenatud mõned standardse SharePointi stiile siin oleks kooskõlas. Arvan, et see au muutused ülemaailmse css-faili kui ka teema alistab. --> <Tabel laius="100%" cellspacing="0" CellPadding="2" stiil="äärist paremale: 1 tahke #C0C0C0; allääris: 1 tahke #C0C0C0; ääriselaadi vasakule: tahke; Vasak-laius: 1; top-ääriselaad: tahke; top-laius: 1;"> <TR> <TD joondamine="keskus"> <Tabel ääris="1" laius="100%"> <!-- Iga oleku, mida me tahame, et graafik, Kutsume "ShowBar" Mall. Me pass: 1. Sildi rea jaoks. See muundatakse hüperlink. 2. Protsent (muutuja ülalt). 3. Tegeliku väljanime aluseks olev loendi kood. See vajadus kohaneda kuvatava sildiga. 4. Väljaväärtuse omavahel ühtima #3. 5. See tähis üksusi kokku (mitte kõik olekukoodid kokkuvõttest). Ta kiirgab oma <TR></TR> ja horisontaalne tulpdiagramm rida. Me nimetame seda malli iga tahame Vaata olekukood. --> <XSL-i:kõne-Mall Nimi="ShowBar"> <XSL-i:koos param Nimi="BarDisplayLabel" Valige=""Ettepanek""/> <XSL-i:koos param Nimi="BarPercent" Valige="$percentProposed"/> <XSL-i:koos param Nimi="QueryFilterFieldName" Valige="'Status'"/> <XSL-i:koos param Nimi="QueryFilterFieldValue" Valige=""Ettepanek""/> <XSL-i:koos param Nimi="TotalItems" Valige="$totalProposed"></XSL-i:koos param> </XSL-i:kõne-Mall> <XSL-i:kõne-Mall Nimi="ShowBar"> <XSL-i:koos param Nimi="BarDisplayLabel" Valige=""Seiskunud""/> <XSL-i:koos param Nimi="BarPercent" Valige="$percentStalled"/> <XSL-i:koos param Nimi="QueryFilterFieldName" Valige="'Status'"/> <XSL-i:koos param Nimi="QueryFilterFieldValue" Valige=""Seiskunud""/> <XSL-i:koos param Nimi="TotalItems" Valige="$totalStalled"></XSL-i:koos param> </XSL-i:kõne-Mall> <XSL-i:kõne-Mall Nimi="ShowBar"> <XSL-i:koos param Nimi="BarDisplayLabel" Valige=""Lõpetamata""/> <XSL-i:koos param Nimi="BarPercent" Valige="$percentInProcess"/> <XSL-i:koos param Nimi="QueryFilterFieldName" Valige="'Status'"/> <XSL-i:koos param Nimi="QueryFilterFieldValue" Valige=""Lõpetamata""/> <XSL-i:koos param Nimi="TotalItems" Valige="$totalInProcess"></XSL-i:koos param> </XSL-i:kõne-Mall> </Tabel> </TD> </TR> </Tabel> </XSL-i:muidu> </XSL-i:Valige> </XSL-i:Mall> <!-- See mall ei tööta kuvama üksikutele ridadele tulpdiagramm. Sul ilmselt teha enamiku oma tutistamine siin. --> <XSL-i:Mall Nimi="ShowBar"> <XSL-i:Param Nimi="BarDisplayLabel" /> <!-- Label, tähistamaks --> <XSL-i:Param Nimi="BarPercent"/> <!-- Protsent kogusummast. --> <XSL-i:Param Nimi="QueryFilterFieldName"/> <!-- Päringu esitamiseks kasutatakse & filter --> <XSL-i:Param Nimi="QueryFilterFieldValue"/> <!-- Päringu esitamiseks kasutatakse & filter --> <XSL-i:Param Nimi="TotalItems" /> <!-- selles barlabel arv kokku --> <TR> <!-- Baar label ise. --> <TD klass="MS-formbody" laius="30%"> <!-- See järgmise komplekti avaldused ehitab päringustringi, mis võimaldab meil näha filtreeritud vaates põhiandmete. Me teeme mõned asjad siin kasutada: 1. Me minna FilterField1 ja FilterValue1 üle loendis veeru filtreerimine. 2. SharePointi möödub olulisemaks parameetriks meile, ListUrlDir, mis viitab aluseks oleva nimekirja, mille vastu selle DVWP "töötab". Ei ole XSL lõbus? --> <XSL-i:teksti Keela väljund põgenedes="Jah"> <![CDATA[<href ="]]></XSL-i:teksti> <XSL-i:väärtuse kohta Valige="$ListUrlDir"/> <XSL-i:teksti Keela väljund põgenedes="Jah"><![CDATA[?FilterField1 =]]></XSL-i:teksti> <XSL-i:väärtuse kohta Valige="$QueryFilterFieldName"/> <XSL-i:teksti Keela väljund põgenedes="Jah"><![CDATA[&FilterValue1 =]]></XSL-i:teksti> <XSL-i:väärtuse kohta Valige="$QueryFilterFieldValue"/> <XSL-i:teksti Keela väljund põgenedes="Jah"><![CDATA[">]]></XSL-i:teksti> <XSL-i:väärtuse kohta Valige="$BarDisplayLabel"/> <XSL-i:teksti Keela väljund põgenedes="Jah"><![CDATA[</a>]]></XSL-i:teksti> <!-- Järgmise bitt näitab mõned numbrid vormingus: "(Kokku / % kogu)" --> (<XSL-i:väärtuse kohta Valige="$TotalItems"/> / <!-- See tekitab kena protsenti sildi meile. Tänud, Microsoft! --> <XSL-i:kõne-Mall Nimi="percentformat"> <XSL-i:koos param Nimi="protsenti" Valige="$BarPercent"/> </XSL-i:kõne-Mall>) </TD> <!-- Lõpuks, paisata on <TD> silt Baar ise.--> <TD> <Tabel CellPadding="0" cellspacing="0" ääris="0" laius="{ringi($BarPercent * 100)+1}%"> <TR bgcolor="punane"> <XSL-i:teksti Keela väljund põgenedes="Jah"><![CDATA[&nbsp;]]></XSL-i:teksti> </TR> </Tabel> </TD> </TR> </XSL-i:Mall> <!-- See pärineb otse mõned XSL leidsin MS malli. --> <XSL-i:Mall Nimi="percentformat"> <XSL-i:Param Nimi="protsenti"/> <XSL-i:Valige> <XSL-i:Kui test="Vorminda numbrit($protsenti, '#,##0%;-#,##0%')= "NaN"">0%</XSL-i:Kui> <XSL-i:muidu> <XSL-i:väärtuse kohta Valige="Vorminda numbrit($protsenti, '#,##0%;-#,##0%')" /> </XSL-i:muidu> </XSL-i:Valige> </XSL-i:Mall> </XSL-i:laadileht>

Tulemused:

Ülevalt XSL tekitab see graafik:

Pilt

Puurida pääsemiseks klikkides olekukood:

Pilt

Sõlmida mõtted:

Saab seda üldistada?

Ma armastan seda Graafikavidinate kontseptsiooni, kuid ma vihkan fakti, et pean minna ja teha nii palju käsitsi kodeerimine. Ma olen andnud väike arvasin, et kas ta saab üldistada ja ma olen optimistlik, Aga ma olen ka natuke hirmus, et võib esineda telliskivisein kusagil mööda teed, mis ei paku mingit töö-around. Kui kellelgi on häid ideid selle, Palun pange tähele kommentaare või kirjuta mulle.

Vertikaalne graafikud:

See on horisontaalne tulpdiagramm. See on kindlasti võimalik luua vertikaalne graafik. Lihtsalt tuleb muuta HTML. Ma hakkaks samamoodi: Loo HTML esindatuse vertikaalne tulpdiagrammil ja seejärel mõtlema, kuidas saada, et via XSL. Kui keegi on huvitatud, et, Ma võiks veenda proovi ja kiiksud välja töötada. Kui keegi on juba teinud, et, palun andke mulle teada ja ma hea meelega link oma blogi 🙂

Ma arvan, et väljakutseks vertikaalne graafik on graafik etiketid on keerulisem, aga kindlasti mitte võimatu.

Väli nimi Sainpas su:

Vähemalt kahte asja tähele teie väljanimedega.

Esimese, välja nime välja ei pääsenud XSL-i. See tuleb ilmselt küsimus siin:

        <XSL-i:muutuja Nimi="totalProposed" 
Valige="Krahv(/dsQueryResponse/ridu/rida[normaliseerida ruumi(@Status) = "Ettepanek"])" />

Kui teie "olek" veeru nimi on tegelikult "olekukood" siis tuleb sellele viidata kui "Status_x0020_Code":

   <XSL-i:muutuja Nimi="totalProposed" 
Valige="Krahv(/dsQueryResponse/ridu/rida[normaliseerida ruumi(@Status_x0020_Code) = "Ettepanek"])" />

Teine, ja ma olen natuke udune selles, aga pead ka olema ja teatise väärtus muutub. Kui panete oma valdkonnas "olekukood" ja siis hiljem, Nimetage see ümber "AFE olek", "sisemine nimi" ei muutu. Sisemine nimi on ikkagi "olekukood" ja peab viitama kui "Status_x0020_Code". "Muud vahendid" lingid võib aidata diagnoosida ja parandada selliste probleemide.

Umbes et värv:

Ma valisin "punased" sest see on mulle meeldiv hetkel. Ei ole suur asi näidata erinevaid värve nii, et ainult visuaalse kirjeldama mitu, vaid ka näha kasulik KPI. Näiteks, Kui protsent "seiskunud" AFE's on > 10% siis näitab punane, muidu Näita seda musta. Kasutamine <XSL-i:Valige> selle saavutamiseks.

Muud ressursid:

Õnnelik ümberkujundamine!

<lõpp />

Telli minu blogi!

Kohandatud loendi kaudu andmete esitamine OM (või, Veel teise OM andmete Displayor [nagu YACC, kuid eri])

Täna, Veetsin tundi tabada algpõhjus taga sõnum "teie sisestatud veeru nimi on juba kasutusel või reserveeritud käputäis. Valige mõni muu nimi."

Kõnealuse veergu võiks luua, kustutatakse ning luuakse uuesti teise keskkonda, nii et ma teadsin, et see ei olnud reserveeritud. Aga, Ma lihtsalt ei suutnud leida veeru kõikjal kaudu mistahes kohas Superior SharePointi kasutajaliidesega saidikogumi.

Ma sisestatud MSDN-i foorumites siin ja selle alistamatu Andrew Woodward juhtis mind objekti mudeli alusandmeid suunas.

Käisin CodePlex leida mõned vahendid, mis aitaks mul peer arvesse OM alusandmeid ja aidake mul leida hädas.

Üritasin mitmeid tööriistu ja nad olid väga lahedad ja huvitavad kuid lõpuks, UI ei olnud piisavalt hea, et minu eesmärk. Ma ei ole kritiseerida neid mis tahes viisil, kuid selgelt vahend tegijad ei olnud minu probleem meeles oma Kasutajaliidese loomisel :). Enamik inimesi tundub päris palju aega ja vaeva töökoha loomisel tuleks investeerida / kliendi rakenduste, mis pakuvad puude views, Paremklõpsake kontekstimenüüd jne. Need on kena ja kõik, kuid see on palju tööd, et luua top-of-the-line kasutuskogemust, mis on väga paindlik.

Ma tõesti vajasin vastust sellele probleemile. See tekkis mulle, et kui ma saaks kõik saidi veergude kohandatud loendi saidikogumilt, Ma ei filtritakse, sorteerida ja seisukohad, mis aitaks mul leida see väidetavalt olemasoleva veeru loomine (mida ta tegi, BTW). Ma läksin edasi ja tegin mis ning tund või kaks hiljem, oli minu saidi veergude laadida kohandatud loendi rühmitamine, sorteerimine jne. Leidsin minu vastus viis minutit hiljem.

Kui ma edukalt võtta üle maailma, Arvan, et ma määrus, et kõik SharePointi tööriistad pakkujad peavad tõsiselt kaaluma katte oma objekti mudeli andmeid kohandatud loendi. Nii, Mul on õigus otsida mis tahes viisil ma tahan (piiranud, Muidugi, standardse SharePointi funktsioonid).