Kategorija Arhiv: SharePoint razvoj

Pozor, zlom spremembe v ItemStyle.xsl

Sem delal z ItemStyle.xsl prilagodite videz spletni gradnik poizvedbe vsebine in pravico o času kosila, Naredil sem zlom spremeni v xsl. Ne zavedaš, da, ampak to je daljnosežne učinke mest. Sem šla na kosilo in po moji vrnitvi, opazil to sporočilo, ki se pojavljajo v kup krajev:

Ni mogoče prikazati v tem spletnem gradniku. Odpraviti težavo, Odprite spletno stran v urejevalniku HTML, združljiv s storitvami Windows SharePoint Services, na primer Microsoft Office SharePoint Designer. Če se težava ponavlja, Obrnite se na skrbnika spletnega strežnika.

Jaz kriva stranka (še ne zaveda, da je moja krivda v tem trenutku) vendar je sčasoma opazil da vizualen atelje intellisense je opozorilo mi da sem imel poškodovano XSL. Sem jo popravi in vse začel delati.

Pazite darned, pri delu z ItemStyle.xsl (in katero koli globalno datotek XSL) — jih kršijo vpliva na številnih artefaktov v zbirki mest.

<namen />

Prikaz vsebine rezultate del spletne poizvedbe v mrežo / Tabela

Pregled in cilj

Iz škatle, MOSS’ Spletni gradnik poizvedbe vsebine (CQWP) rezultate prikaže v obliki seznama, podobne rezultate iskanja. Prav tako je mogoče za prikaz rezultatov v obliki mreže (i.e. Oblika HTML tabele). Mreža oblike so boljši v nekaterih okoliščinah. Opišem, kako doseči ta učinek tega člena.

Poslovni scenarij

Sem delal s stranko na širitev MOSS je lotitev-širok. Smo izdelali svoje taksonomije, da projekti so prvi razred državljani v hierarhiji in imajo lastno spletno stran najvišje ravni. Vodje projektov, vzdrževanje posameznega seznam informacije o povzetku projekta, kot naslov, proračun, rok pričakovanega dokončanja, preostalih proračun in druga polja vrsta povzetka. S "nespecifični" Mislim, po meri seznam SharePoint zagotovljeno, da vsebuje le en element. Poenostavljeno, Izgleda, da to:

slike

Tehnični pristop je zelo podobno, kot je opisano tukaj (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). Na CQWP uporablja za pretvorbo XSL oddajati HTML za brskalnik, da postane.

Vedno sem Isplanirati rezultat pred potapljanje v XSL, ker XSL je nočna mora. Tukaj je moj želenega rezultata:

slike

HTML, kot je ta ustvarja ta rezultat:

<HTML>
 <telo>
 <Center>
 <Tabela obroba= 1>

<!-- Oznake-->
 <tr BGColor= modra>
 <TD><Pisava barva= bela><b>Ime projekta</b></Pisava></TD>
 <TD Poravnaj= desno><Pisava barva= bela><b>Celotni datum</b></Pisava></TD>
 <TD Poravnaj= desno><Pisava barva= bela><b>Proračun</b></Pisava></TD>
 <TD Poravnaj= desno><Pisava barva= bela><b>Dejanske stroške</b></Pisava></TD>
 <TD><Pisava barva= bela><b>Splošno stanje</b></Pisava></TD>
 </tr>

<tr>
 <TD>Re-wire računalniški učilnici.</TD>
 <TD Poravnaj= desno>02/01/08</TD>
 <TD Poravnaj= desno>22,500.00</TD>
 <TD Poravnaj= desno>19,000.00</TD>
 <TD>V teku</TD>
 </tr>

<tr>
 <TD>Določba strežnikov za SQL nadgradite</TD>
 <TD Poravnaj= desno>04/01/08</TD>
 <TD Poravnaj= desno>7,500.00</TD>
 <TD Poravnaj= desno>0.00</TD>
 <TD>Načrtovanih</TD>
 </tr>

</Tabela>
 </Center>
 </telo>
</HTML>

Pristop

Sledite tem korakom za ustvarjanje mreže:

  1. Opredeliti elemente v mreži (vrstice/stolpce).
  2. Določite in ustvarite stolpce potrebno mesta.
  3. Ustvarjanje podstrani za projekte in nespecifični sezname.
  4. Dodajte na CQWP spletni strani in nastavite na iskanje vaše sezname.
  5. Spremeni v CQWP XML zbrati up dodatne stolpce.
  6. Spreminjanje XSL za ustvarjanje tabele.

Bom osredotočila na šestem. Števila od ena do štiri so naravnost naprej in nekaj, kar vsak CQWP uporabnik je že naredil. Število pet je bilo dobro dokumentiran, drugi, vključno z izčrpno zaslon strel obremenjeno članek iz MSDN tukaj (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) in Heather Solomon's blog tukaj (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).

Matice in sorniki

Začetek in izvajanje korake eno do pet kot na MSDN dokumentacijo in Heather Solomon's članek.

Na tej točki, ste dodali vaš CQWP stran in imate vaš <CommonViewFields> konfiguriran kot je potrebno.

Običajni koraki, Dobim teh vmesnih rezultatov:

1. Ustvarite vrsto vsebine, seznam iz predloge po meri za to vrsto vsebine in dveh mestih. Tukaj je vrsta vsebine:

slike

Tukaj je stran struktura:

slike

2. Dodajanje v CQWP čez tvor svoj projekt podmesta in nespecifični seznamov Povzetek projekta:

slike

3. Dodaj vse dodatne informacije želim preko na <CommonViewFields>:

        <Lastnost ime="CommonViewFields" vrsta="niz">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</Lastnost>

Upoštevajte, da sem moral obdržati vse lastnosti polja na eno vrstico ali ne bi delo (CQWP bi mi povedal, da poizvedba je vrnila nobenih elementov).

4. Na tej točki, smo pripravljeni, da presežemo članek MSDN in flip na nad Heather Solomon's članek. Sledite svoj korakov začne blizu korak #5 ustvariti prilagojene / unghosted različica ItemStyle.xsl. Sledim Heather's nasveti, navzgor po korak 11 in dobili teh vmesnih rezultatov:

4.1: Ime moje predloge XSL, kot sledi:

<XSL:ime predloge = "mreža" ujemajo = "vrstico[@Style = "Omrežje"]" mode = "itemstyle">

Tudi rahlo spremeniti, da jo predlagal <XSL:za vsako …> z dodajanjem a <br /> Tag zagotoviti čistejši kotacijo:

    <XSL:za vsako Izberite="@*">
      P:<XSL:vrednost za Izberite="ime()" /><br/>
    </XSL:za vsako>

4.2: Spreminjam spletnega gradnika, pojdite na videz in izberite svoj omrežje"" slog:

slike

Uporabite nastavitve, in tukaj je rezultat:

slike

Lahko vidimo iz zgoraj da polja želimo (Ime projekta, stroške, status, itd) so na voljo za nas za uporabo, ko smo oddajajo HTML. Ne samo, da, ampak smo videli imena, s katerimi smo morajo reference stolpce v XSL. Na primer, smo reference projekt Status kot "Project_x005F_x0020_Name".

Na tej točki, bomo odstopati od Heather's blog in ramenih teh velikanov, Dodam moje malo.

ContentQueryMain.xsl

OPOMBA: Ko spreminjate tako ContentQueryMain.xsl kot tudi ItemStyle.xsl, morate preveriti te datoteke nazaj v, preden boste videli učinek spremembe.

Za namene mrežo za izdelavo, MOSS uporablja dve različni XSL datoteke, da rezultate vidimo iz a CQWP. Za ustvarjanje prejšnje bit proizvodnje, mi spremeni ItemStyle.xsl. MAH dejansko uporablja drugo datoteko XSL, ContentQueryMain.xsl, da v povezavi z ItemStyle.xsl ustvariti svoj HTML. Kot že ime pove, ContentQueryMain.xsl je glavni"" XSL, ki krmili celoten prevod. Poudarjeno skozi vseh predmetov in prehaja jih enega po enega na predlog v ItemStyle.xsl. Mi boste spremeniti ItemStyle.xsl za ustvarjanje na prostem <Tabela> oznako pred oddaja prvi vrstici podatkov in zapiranje <Tabela> oznaka po oddajajo zadnji vrstici. Da bi to dosegli, ContentQueryMain.xsl je spremenil prenesti dva parametra naše omrežje"" predlogo v ItemStyle.xsl, "zadnji vrstici" in "trenutne vrstice". ItemStyle.xsl uporablja to pogojno oddajati potrebne oznake.

Heather Solomon tehniki, bomo poiskati ContentQueryMain.xsl. Nahaja se na istem mestu kot ItemStyle.xsl. Ta zaslon strel bi moral pomagati:

slike

Moramo narediti te spremembe:

  • Spremenite predlogo xsl, "CallItemTemplate" ki dejansko sklicuje naše Grid predloga v ItemStyle.xsl. Bo peljemo dva parametra za Grid predloga, tako da ima podatke, da za pogojno ustvarjanje, odpiranje in zapiranje <Tabela> Tags.
  • Spremeniti še en košček od ContentQueryMain.xsl, ki zahteva "CallItemTemplate" prenesti to "LastRow" parameter, tako da LastRow lahko prenesejo naše Grid predloga.

Poiščite predlogo, imenovano "OuterTemplate.CallItemTemplate" opredelila niz:

  <XSL:predlogo ime="OuterTemplate.CallItemTemplate">

Zamenjati celotno predlogo takole:

  <XSL:predlogo ime="OuterTemplate.CallItemTemplate">
    <XSL:param ime="CurPosition" />

    <!--
      Dodaj "LastRow" Parameter.
      Mi samo uporabo, ko je element style prelaz v "Mrežo".
    -->
    <XSL:param ime="LastRow" />

    <XSL:Izberite>
      <XSL:ko test="@Style = "NewsRollUpItem"">
        <XSL:uporabljajo predloge Izberite="." način="itemstyle">
          <XSL:s param ime="EditMode" Izberite="$cbq_iseditmode" />
        </XSL:uporabljajo predloge>
      </XSL:ko>
      <XSL:ko test="@Style = "NewsBigItem"">
        <XSL:uporabljajo predloge Izberite="." način="itemstyle">
          <XSL:s param ime="CurPos" Izberite="$CurPosition" />
        </XSL:uporabljajo predloge>
      </XSL:ko>
      <XSL:ko test="@Style = "NewsCategoryItem"">
        <XSL:uporabljajo predloge Izberite="." način="itemstyle">
          <XSL:s param ime="CurPos" Izberite="$CurPosition" />
        </XSL:uporabljajo predloge>
      </XSL:ko>

      <!--
              Pass trenutni položaj in lastrow v mrežo itemstyle.xsl predlogo.
              ItemStyle.xsl ki bo uporabil oddajati odprte in zapiranje <Tabela> Tags.
      -->
      <XSL:ko test="@Style = "Mrežo"">
        <XSL:uporabljajo predloge Izberite="." način="itemstyle">
          <XSL:s param ime="CurPos" Izberite="$CurPosition" />
          <XSL:s param ime="Nazadnje" Izberite="$LastRow" />
        </XSL:uporabljajo predloge>
      </XSL:ko>

      <XSL:drugače>
        <XSL:uporabljajo predloge Izberite="." način="itemstyle">
        </XSL:uporabljajo predloge>
      </XSL:drugače>
    </XSL:Izberite>
  </XSL:predlogo>

Komentarje opišite namen spremembe.

seveda, "OuterTemplate.CallItemTemplate" se sama imenuje iz druge predloge. To predlogo poiščite z iskanjem besedilni niz:

<XSL:predlogo ime="OuterTemplate.Body">

Pomikanje po navodilih v OuterTemplate.Body in vstavite naslednji LastRow parameter (prikazano kot komentar v poševnem tisku):

<XSL:Call-template ime="OuterTemplate.CallItemTemplate">
  <XSL:s param ime="CurPosition" Izberite="$CurPosition" />
  <!-- Vstavi LastRow parameter. -->
  <XSL:s param ime="LastRow" Izberite="$LastRow"/>
</XSL:Call-template>

Po vsem tem, končno imamo stvari pravilno nastavljen tako, da lahko oddaja naše ItemStyle.xsl <Tabela> Tags na pravem mestu.

ItemStyle.Xsl

OPOMBA: Znova, Preverite v ItemStyle.xsl po spreminjati tako, da si ogledate učinek teh sprememb.

Tukaj imamo dve nalogi:

  • Zamenjati celotno mrežo predloge. Vi moči ulitek/pasta od spodaj.
  • Dodamo nekaj Lari-fari zunaj definicijo predloge, ki omogoča "formatcurrency" predloge za delo. (Vam lahko povem, da imam neizrazito ročaj na XSL).

Prvi, na vrhu ItemStyle.xsl, Dodaj to vrstico:

  <!-- Nekaj Lari-fari, ki nam omogoča, da prikažete ZDA. valuta. -->
  <XSL:decimalni obliki ime="osebje" mestno="D" />

  <XSL:predlogo ime="Privzeto" tekmo="*" način="itemstyle">

Upoštevajte, da sem dodal neposredno pred na <XSL:ime predloge = "privzeta" …> opredelitev.

Naslednji, nazaj poseči po naše Grid predloga. Zamenjati celotno mrežo predloge s spodnjo kodo. To je temeljito razložiti, ampak ne oklevajte, da email mi ali pustite komentar na mojem blogu, če imate vprašanja.

  <XSL:predlogo ime="Mreža" tekmo="Vrstica[@Style = "Mrežo"]" način="itemstyle">

    <!--
      ContentMain.xsl prelazov CurPos in nazadnje.
      Te uporabljamo pogojno oddajati odprte in zapiranje <Tabela> Tags.
    -->
    <XSL:param ime="CurPos" />
    <XSL:param ime="Nazadnje" />

    <!-- Naslednje spremenljivke so nespremenjen od standardnih ItemStyle.xsl -->
    <XSL:spremenljivka ime="SafeImageUrl">
      <XSL:Call-template ime="OuterTemplate.GetSafeStaticUrl">
        <XSL:s param ime="UrlColumnName" Izberite=""Podoba""/>
      </XSL:Call-template>
    </XSL:spremenljivka>
    <XSL:spremenljivka ime="SafeLinkUrl">
      <XSL:Call-template ime="OuterTemplate.GetSafeLink">
        <XSL:s param ime="UrlColumnName" Izberite=""LinkUrl""/>
      </XSL:Call-template>
    </XSL:spremenljivka>
    <XSL:spremenljivka ime="DisplayTitle">
      <XSL:Call-template ime="OuterTemplate.GetTitle">
        <XSL:s param ime="Naslov" Izberite="@Title"/>
        <XSL:s param ime="UrlColumnName" Izberite=""LinkUrl""/>
      </XSL:Call-template>
    </XSL:spremenljivka>
    <XSL:spremenljivka ime="LinkTarget">
      <XSL:Če test="@OpenInNewWindow = "True"" >_blank</XSL:Če>
    </XSL:spremenljivka>

    <!--
      Tukaj definiramo spremenljivke, "tableStart".  Ta vsebuje HTML, ki jih uporabljamo za opredelitev odpiranje tabele, kot tudi oznake stolpcev.  Upoštevajte, da če CurPos = 1, To vključuje HTML oznako CDATA.
      Drugače, je prazen.

      TableStart vrednost emited vsakič, ko ItemStyle se imenuje preko ContentQueryMain.xsl.
    -->
    <XSL:spremenljivka ime="tableStart">
      <XSL:Če test="$CurPos = 1">
        <![CDATA[
        <obroba tabele = 1>
          <tr bgcolor = "blue">
            <TD><Barva pisave = "bela"><b>Ime projekta</b></Pisava></TD>
            <TD align = "desno"><Barva pisave = "bela"><b>Celotni datum</b></Pisava></TD>
            <TD align = "desno"><Barva pisave = "bela"><b>Proračun</b></Pisava></TD>
            <TD align = "desno"><Barva pisave = "bela"><b>Dejanske stroške</b></Pisava></TD>
            <TD><Barva pisave = "bela"><b>Splošno stanje</b></Pisava></TD>
          </tr>
        ]]>
      </XSL:Če>
    </XSL:spremenljivka>

    <!--
      Druga spremenljivka, tableEnd preprosto določa zapiranje tabela oznako.

      Kot pri tableStart, je vedno emited.  Zato je njegova vrednost je dodeljen pogojno na podlagi ali smo jih sprejela zadnji vrstici ContentQueryMain.xsl.
    -->
    <XSL:spremenljivka ime="tableEnd">
      <XSL:Če test="$CurPos = $Last">
        <![CDATA[ </Tabela> ]]>
      </XSL:Če>
    </XSL:spremenljivka>

    <!--
      Vedno oddajati vsebina tableStart.  Če to ni prva vrstica nas sprejel ContentQueryMain.xsl, potem vemo, da bo njegova vrednost prazna.

      Onesposobiti izhod uhaja, ker ko tableStart ni prazno, To vključuje dejansko HTML, da želimo biti opravljene s strani brskalnika.  Če ne povemo XSL razčlenjevalca, da onemogočite izhod uhaja, To bo ustvarilo stvari, kot"&lt;Tabela&gt;" namesto o"<Tabela>".
    -->
    <XSL:vrednost za Izberite="$tableStart" onesposobiti-proizvodnja uhaja="da"/>


    <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:vrednost za Izberite="@Project_x005F_x0020_Name"/>
      </TD>

      <TD Poravnaj="pravico">
        <XSL:vrednost za Izberite="@Project_x005F_x0020_End_x005F_x0020_Date"/>
      </TD>

      <TD Poravnaj="pravico">
        <XSL:Call-template ime="formatcurrency">
          <XSL:s param ime="vrednost" 
Izberite="@Project_x005F_x0020_Budget"></XSL:s param> </XSL:Call-template> </TD> <TD Poravnaj="pravico"> <XSL:Call-template ime="formatcurrency"> <XSL:s param ime="vrednost" Izberite="@Project_x005F_x0020_Expenses">
</XSL:s param> </XSL:Call-template> </TD> <TD> <XSL:vrednost za Izberite="@Project_x005F_x0020_Status"/> </TD> <!-- Vse to je komentirana za razjasnitev stvari. Vendar, prinese nazaj in stvari v a <TD> videti njegov učinek. --> <!-- <div id = "linkitem" razred = "točke"> <XSL:Če test = "dolžina niza($SafeImageUrl) != 0 "> <razred del = "slike-površina-levo"> <a href = "{$SafeLinkUrl}" Target = "{$LinkTarget}"> <img class = "image-nespremenljivo širino" src = "{$SafeImageUrl}"
ALT = "{@ImageUrlAltText}"/> </a> </div> </XSL:Če> <razred del = "link-postavka"> <XSL:Call-template
name="OuterTemplate.CallPresenceStatusIconTemplate"/> <a href = "{$SafeLinkUrl}"
Target = "{$LinkTarget}" naslov = "{@LinkToolTip}"> <XSL:vrednost-izberite "$DisXSLyTitle" = /> </a> <razred del = "opis"> <XSL:vrednost od select="@Description" /> </div> </div> </div>
--> </tr> <!-- Oddajajo zapiranje tabela tag. Če ne bomo v zadnji vrsti, To bo prazna. --> <XSL:vrednost za Izberite="$tableEnd" onesposobiti-proizvodnja uhaja="da"/> </XSL:predlogo> <XSL:predlogo ime="formatcurrency"> <XSL:param ime="vrednost" Izberite="0" /> <XSL:vrednost za Izberite='oblika-število($vrednost, "$DDD,DDD,DDD.DD", "osebje")' /> </XSL:predlogo>

Standardni zasloni za vnos podatkov WSS in MOSS ne podpirajo kaskadnih Drop-padci (ali drugih znotraj-s komunikacijo)

POSODOBITEV (04/2008): Ta velik blog vnos kaže dobro javascript temelji pristop na težavo: http://webborg.blogspot.com/2008/04/add-functions-and-events-to-sharepoint.html

II POSODOBITEV: (04/2008): Ta blog vpis tudi obetaven: http://www.cleverworkarounds.com/2008/03/13/free-mosswss-2007-web-part-hide-controls-via-javascript/

Večkrat na teden, Če ne na dan, Uporabniki foruma opisuje zahteve, ki bi običajno izpolnjene prek kaskadnih drop-padci. Na primer, Imam dva kaplja-niz kontrolnikov:

  • Seznam ZDA. države
  • Seznam ZDA. mesta.

Kot odgovorni ponudniki UI, želimo, da deluje kot to:

  • Paul izbere ZDA. država iz spustnega.
  • To povzroča mesta spustnem pocediti le teh mest, ki pripadajo izbrane države.
  • Paul izbere mesto s filtriranega seznama.

Podpore za to funkcijo ni out-of-the-box. v bistvu, ni podpore za kakršno koli neposredno znotraj poljubne oblike komunikacije OOB. To vključuje programsko skriva/usposobiti/onesposobiti polja odgovor na področju spremembe drugje na obrazcu.

Pravi cilj tega člena da opisujejo možne rešitve in to so možnosti, kot vem, jih:

  1. Razvoj po meri stolpčni. Kot po meri-stolpec-razvijalec, imate popoln nadzor nad "world" tega stolpca po meri. Lahko izvaja kaskadno kaplja-niz tako.
  2. Razmislite o uporabi poteka dela. V nekaterih primerih, želite samodejno dodeliti vrednosti polja, ki temelji na vrednosti drugega polja. V tem primeru, običajno bi poskusite uporabiti izračunanega stolpca, ampak nekaj krat, to ne bi bilo delo opravljeno. SharePoint Designer je relativno upravljanje prijazna alternativa spustite navzdol v kodo in visual studio. Če greste to pot, Zavedajte se tega vprašanja obravnavala Ta članek (http://paulgalvin.spaces.live.com/blog/cns!CC1EDB3DAA9B8AA!405.entry).
  3. Rutine: Kot poteka dela, To je po--fact rešitev. Rutina za obravnavo dogodkov je zbira .NET (C#, VB.NET) v kateri SharePoint preda nadzor. Predmet razvijete ima dostop do podatkov na seznamu (in celo predmetni model) in lahko storite vse potrebno izračun.
  4. S programom SharePoint Designer za ustvarjanje po meri obrazce. Nimam neposredne izkušnje s tem pristopom, but I hear they are doing good things with NewForm.aspx these days 🙂
  5. Roll lastne ASP.NET podatkov funkcije vstopne (kot samostojni spletni strani ali spletni gradnik) ter raba to namesto tega.

Če kdo ve drugih in/ali boljše možnosti, prosim komentar in bom posodobiti telo ta post.

<namen />

Technorati Tags:

Ustvarite Bar grafov v SharePoint

Pregled:

(POSODOBITEV 12/04/07: Dodali še zanimiv vir na koncu povezujete drug blog, ki obravnava to preko zelo zanimiv spletni gradnik)

Ta blog vnos opisuje, kako ustvarite palični grafikon v SharePoint. To deluje v WSS in MOSS okoljih, kot je odvisna le od spletni gradnik podatkovnega pogleda.

Splošni pristop je, kot sledi:

  1. Ustvarite seznam ali knjižnico, ki vsebuje želene podatke za graf.
  2. Kraj je povezana knjižnica dokumentov / po meri seznam na stran in jo pretvorite v spletni gradnik podatkovnega pogleda (DVWP).
  3. Spremeni v DVWP XSL za ustvarjanje HTML, ki kaže kot graf.

Poslovni scenarij / Nastavitev:

Jaz sem ustvaril seznam po meri s standardno naslov stolpca in en dodaten stolpec, "Status". Ta modeli (zelo poenostavljeno) "dovoljenje za stroške" scenarij, kjer naslov predstavlja projekt in stanje vrednost s seznama:

  • Predlagani
  • V procesu
  • Zastala

Cilj je izdelava interaktivne vodoravni črtni grafikon, ki prikazuje te kode stanja.

So poseljena s seznama in izgleda takole:

slike

Ustvarite spletni gradnik podatkovnega pogleda:

Ustvarite v DVWP z dodajanjem po meri seznam na stran (strani v mojem primeru) in sledite navodilom tukaj (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!395.entry).

Poleg tega, da preprosto ustvarjanje na DVWP, moramo tudi nastavite lastnost ostranjevalne pokazati vse vrstice na voljo. Za mene, to izgleda nekako takole:

slike

Na tej točki, Sem vedno zaprite SPD in brskalnik. Sem nato ponovno odpre stran z brskalnikom. S tem se izognemo pomotoma mucking up spletna postavitev del na strani.

Spreminjanje XSLT:

Zdaj je čas za spremembo XSLT.

Jaz zmeraj raba vizualen atelje za to. (Glej tukaj za pomembno obvestilo o intellisense, ki vam bo pomagal veliko).

I ustvarite prazen projekt dodate štiri nove datoteke (Zamenjava besede "Original" in "New" kot primerno):

  • Original.XSLT
  • New.XSLT
  • Original Params.xml
  • Novo Params.xml

V mojem primeru, Izgleda, da to:

slike

Spremenite spletni gradnik in kopijo params in XSL izvirniku"" različica v Visual Studio.

Cilj tukaj je, da povzroči XSL za pretvorbo rezultatov smo dobili nazaj od DVWP poizvedbe v HTML, da postane kot graf.

V ta namen, pomaga, da najprej razmislite, kaj je HTML izgledal, preden sva zmedena norosti, ki je znan kot "XSL". (Da bo jasno, To je preprosto primer; ne vnesite ali copy/paste v vizualen atelje. Jaz priskrbeti se poln udarec izhodiščna točka za to kasneje časnikarsko poročilo). Naslednji graf vzorec upodobi kot HTML, takoj po:

Vzorec stolpčnega grafikona

Ustrezni HTML:

<HTML>
<telo>
<Center>
<Tabela širina = 80 %>
<tr><TD><Center>Vodoravni palični grafikon</TD></tr>
<tr>
<TD align = "center">
<obroba tabele = "1" širina = 80 %>
<tr>
<td širino = 10 %>Odprta</TD>
<TD><Tabela cellpadding ="0" cellspacing ="0" obroba = 0 širina = 50 %><tr bgcolor = rdeča><TD>&nbsp;</TD></tr></Tabela></TD>
</tr>
<tr>
<td širino = 10 %>Zaprta</TD>
<TD><Tabela cellpadding ="0" cellspacing ="0" obroba = 0 width = 25 %><tr bgcolor = rdeča><TD>&nbsp;</TD></tr></Tabela></TD>
</tr>
<tr>
<td širino = 10 %>Zastala</TD>
<TD><Tabela cellpadding ="0" cellspacing ="0" obroba = 0 width = 25 %><tr bgcolor = rdeča><TD>&nbsp;</TD></tr></Tabela></TD>
</tr>
</Tabela>
</TD>
</tr>
</Tabela>
</telo>
</HTML>

Sem rabil mrtvih preprost pristop k ustvarjanju moje palice z določitvijo barvo ozadja vrstice za "rdeče".

Take-away tukaj je to: Na koncu, vse delamo ustvarja HTML z vrsticami in stolpci.

Predloge XSLT:

Sem pa prepisali XSLT, ki ustvarja graf vodoravne vrstice. To je dokaj dobro komentiral, da ne dodam veliko tukaj razen te opombe:

  • Začel sem z privzeti XSL, ki SharePoint Designer, mi je dal, ko sem prvič ustvarili na DVWP.
  • Sem mogel odrezati od osebe EPD 657 linije za 166 vrstice.
  • Nisem igral s parametri XML datoteke (ki je ločeno od XSL in boste vedeli, kaj mislim, ko greš za spremembo DVWP, sam; Obstajata dve datoteke, lahko spremenite). Vendar, zaradi poenostavitve je, Ali odstranili skoraj vse izmed njih s XSL. To pomeni, da če želite, da bi uporaba teh parametrov, vi šele potreba prišteti spremenljivo definicije nazaj v XSL. Da bo enostavno, saj boste imeli prvotni XSL spremenljivo opredelitve v vizualen atelje načrt.
  • Moral bi biti zmožen prepisati ter pasta to naravnost v vaš vizualen atelje načrt. Nato, odstranite moje klice in vstavite svoje klice na "ShowBar".
  • Vrtanje navzdol deluje z ustvarjanjem do <a href> všeč mi je: http://server/List?FilterField1=fieldname&FilterValue1=actualFilterValue. Ta tehnika lahko vrednosti v drugih kontekstih. Na prvi, Mislil sem, da bi morali ustrezati bolj zapletena oblika: http://server/List/AllItems.aspx?View={guid}&FilterField1=blah&FilterValue1=blah, vendar v mojem okolju ki ni potrebno. Na seznamu URL je sprejel nam SharePoint tako to je precej enostavno posploševati.

Tukaj je:

<XSL:Stylesheet različica="1.0" izključi-rezultat-predpone="RS ž o s ddwrt dt msxsl" 
xmlns:msxsl="UNA:schemas-microsoft-com:XSLT" xmlns:XSL="http://www.w3.org/ 1999 / / pretvorbo XSL"
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:o="UNA:schemas-microsoft-com:urad" xmlns:s="UUID:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"
xmlns:DT="UUID:C2F41010-65B3 - 11d 1-A29F-00AA00C14882" xmlns:RS="UNA:schemas-microsoft-com:tabele vrstic" xmlns:ž="#RowsetSchema"
xmlns:ddwrt2="UNA:FrontPage:notranji"
> <XSL:izhod metoda="HTML" zamik="ne" /> <XSL:decimalni obliki NaN="" /> <XSL:param ime="ListUrlDir"></XSL:param> <!-- Rabim to za podporo drill-down. --> <XSL:predlogo tekmo="/" xmlns:SharePoint="Microsoft.SharePoint.WebControls"
xmlns:__designer=http://schemas.microsoft.com/WebParts/v2/DataView/designer xmlns:ASP="http://schemas.microsoft.com/ASPNET/20"
> <XSL:spremenljivka ime="dvt_StyleName">Tabela</XSL:spremenljivka> <XSL:spremenljivka ime="Vrstice" Izberite="/Vrstice/dsQueryResponse/vrstico" /> <XSL:spremenljivka ime="dvt_RowCount" Izberite="Count($Vrstice)" /> <XSL:spremenljivka ime="IsEmpty" Izberite="$dvt_RowCount = 0" /> <XSL:spremenljivka ime="dvt_IsEmpty" Izberite="$dvt_RowCount = 0" /> <XSL:Izberite> <XSL:ko test="$dvt_IsEmpty"> Ni podatkov za graf!<br/> </XSL:ko> <XSL:drugače> <!-- Zanimive stvari se začne tukaj. Moramo opredeliti par spremenljivke za vsako vrstico v graf: skupno število elementov in odstotek celote. --> <XSL:spremenljivka ime="totalProposed" Izberite="Count(/Vrstice/dsQueryResponse/vrstico[normalizira prostor(@Status) = "Predlaga"])" /> <XSL:spremenljivka ime="percentProposed" Izberite="$totalProposed div $dvt_RowCount" /> <XSL:spremenljivka ime="totalInProcess" Izberite="Count(/Vrstice/dsQueryResponse/vrstico[normalizira prostor(@Status) = "V procesu"])" /> <XSL:spremenljivka ime="percentInProcess" Izberite="$totalInProcess div $dvt_RowCount" /> <XSL:spremenljivka ime="totalStalled" Izberite="Count(/Vrstice/dsQueryResponse/vrstico[normalizira prostor(@Status) = "Zastala"])" /> <XSL:spremenljivka ime="percentStalled" Izberite="$totalStalled div $dvt_RowCount" /> <!-- Definiramo mizi HTML. Jaz sem zadolževanja iz nekatere standardne sloge SharePoint tukaj da bi dosledno. Mislim, da bo tudi tema preglasi čast spremembe globalne css datoteke. --> <Tabela širina="100%" cellspacing="0" cellpadding="2" slog="obroba desno: 1 trden #C0C0C0; spodnji rob: 1 trden #C0C0C0; meja proti levi-style: trdna; meja proti levi-width: 1; top-slog obrobe: trdna; Širina obrobe vrh: 1;"> <tr> <TD Poravnaj="Center"> <Tabela obroba="1" širina="100%"> <!-- Za vsako stanje, ki želimo graf, imenujemo "ShowBar" predlogo. Peljemo se: 1. Oznako za vrstico. To se je spremenilo v hiperpovezavo. 2. Odstotek (spremenljivke od zgoraj). 3. Dejanskega imena polja zakonika iz osnovnega seznama. To ni treba prilagoditi Prikaži oznako. 4. Vrednost polja ujemajo za #3. 5. Skupno število elementov te kode stanja (ne vsote vse kode stanja). Oddaja na <tr></tr> in vodoravni palični grafikon vrstice. Imenujemo to predlogo za vsako kodo stanja, želimo, da si ogledate. --> <XSL:Call-template ime="ShowBar"> <XSL:s param ime="BarDisplayLabel" Izberite=""Predlaga""/> <XSL:s param ime="BarPercent" Izberite="$percentProposed"/> <XSL:s param ime="QueryFilterFieldName" Izberite=""Status""/> <XSL:s param ime="QueryFilterFieldValue" Izberite=""Predlaga""/> <XSL:s param ime="TotalItems" Izberite="$totalProposed"></XSL:s param> </XSL:Call-template> <XSL:Call-template ime="ShowBar"> <XSL:s param ime="BarDisplayLabel" Izberite=""Zastala""/> <XSL:s param ime="BarPercent" Izberite="$percentStalled"/> <XSL:s param ime="QueryFilterFieldName" Izberite=""Status""/> <XSL:s param ime="QueryFilterFieldValue" Izberite=""Zastala""/> <XSL:s param ime="TotalItems" Izberite="$totalStalled"></XSL:s param> </XSL:Call-template> <XSL:Call-template ime="ShowBar"> <XSL:s param ime="BarDisplayLabel" Izberite=""V procesu""/> <XSL:s param ime="BarPercent" Izberite="$percentInProcess"/> <XSL:s param ime="QueryFilterFieldName" Izberite=""Status""/> <XSL:s param ime="QueryFilterFieldValue" Izberite=""V procesu""/> <XSL:s param ime="TotalItems" Izberite="$totalInProcess"></XSL:s param> </XSL:Call-template> </Tabela> </TD> </tr> </Tabela> </XSL:drugače> </XSL:Izberite> </XSL:predlogo> <!-- Ta predloga ne dela v palični grafikon prikazuje posamezne vrstice. Verjetno vam najbolj vaše tweaking tukaj. --> <XSL:predlogo ime="ShowBar"> <XSL:param ime="BarDisplayLabel" /> <!-- oznako za prikaz --> <XSL:param ime="BarPercent"/> <!-- Odstotki vsote. --> <XSL:param ime="QueryFilterFieldName"/> <!-- Uporabili za skok na poizvedbo & filter --> <XSL:param ime="QueryFilterFieldValue"/> <!-- Uporabili za skok na poizvedbo & filter --> <XSL:param ime="TotalItems" /> <!-- skupno število tem barlabel --> <tr> <!-- Bar sama oznaka. --> <TD razred="MS-formbody" širina="30%"> <!-- To naslednji niz izjav gradi poizvedbi, ki nam omogoča, da vaja na Filtrirani pogled osnovnih podatkov. Mi lahko uporabite nekaj stvari tukaj: 1. Peljemo FilterField1 in FilterValue1 na seznam filter v stolpcu. 2. SharePoint je mimo ključni parameter nam, ListUrlDir, ki kaže na osnovni seznam, proti kateri to DVWP "izvaja". Ni zabavno XSL? --> <XSL:besedilo onesposobiti-proizvodnja uhaja="da"> <![CDATA[<a href ="]]></XSL:besedilo> <XSL:vrednost za Izberite="$ListUrlDir"/> <XSL:besedilo onesposobiti-proizvodnja uhaja="da"><![CDATA[?FilterField1 =]]></XSL:besedilo> <XSL:vrednost za Izberite="$QueryFilterFieldName"/> <XSL:besedilo onesposobiti-proizvodnja uhaja="da"><![CDATA[&FilterValue1 =]]></XSL:besedilo> <XSL:vrednost za Izberite="$QueryFilterFieldValue"/> <XSL:besedilo onesposobiti-proizvodnja uhaja="da"><![CDATA[">]]></XSL:besedilo> <XSL:vrednost za Izberite="$BarDisplayLabel"/> <XSL:besedilo onesposobiti-proizvodnja uhaja="da"><![CDATA[</a>]]></XSL:besedilo> <!-- Naslednji košček kaže nekaj številk v obliki: "(skupaj / % celotne)" --> (<XSL:vrednost za Izberite="$TotalItems"/> / <!-- To ustvarja lepo odstotkov oznako za nas. hvala, Microsoft! --> <XSL:Call-template ime="percentformat"> <XSL:s param ime="odstotkov" Izberite="$BarPercent"/> </XSL:Call-template>) </TD> <!-- Končno, oddajajo v <TD> oznako za bar sama.--> <TD> <Tabela cellpadding="0" cellspacing="0" obroba="0" širina="{krog($BarPercent * 100)+1}%"> <tr BGColor="rdeča"> <XSL:besedilo onesposobiti-proizvodnja uhaja="da"><![CDATA[&nbsp;]]></XSL:besedilo> </tr> </Tabela> </TD> </tr> </XSL:predlogo> <!-- To je vzeta neposredno iz nekaterih XSL, ki sem našel v MS predlogo. --> <XSL:predlogo ime="percentformat"> <XSL:param ime="odstotkov"/> <XSL:Izberite> <XSL:ko test="oblika-število($odstotkov, '#,##0%;-#,##0%')= "NaN"">0%</XSL:ko> <XSL:drugače> <XSL:vrednost za Izberite="oblika-število($odstotkov, '#,##0%;-#,##0%')" /> </XSL:drugače> </XSL:Izberite> </XSL:predlogo> </XSL:Stylesheet>

Rezultati:

XSL od zgoraj ustvarja Ta graf:

slike

Vaja na temeljnih podatkov s klikom na kodo stanja:

slike

Sklepne misli:

Je to možno posplošiti?

Ljubim ta vizualizirajo koncept, vendar pa sovražim dejstvo, da moram iti in narediti toliko ročno kodiranje. Sem dal malo misli na ali lahko mogoče posplošiti in sem optimističen, ampak jaz sem tudi malo strah, da lahko obstaja opečnatega zidu nekje po poti, ki ne ponujajo koli opus-okrog. Če ima kdo nekaj dobrih idej, na to, Prosimo, da opombo v komentarje ali email mi.

Navpično grafov:

To je graf vodoravne vrstice. To je zagotovo mogoče ustvariti navpično graf. Moramo spremeniti HTML. Jaz bi začeli na enak način: Ustvariti HTML predstavitev navpično črtni grafikon in nato ugotovimo, kako priti to preko XSL. Če kdorkoli je zavzet v ki, Sem se lahko prepričal, da preizkusite in izšlo zanka pentlja. Če je nekdo že naredil to, sporočite mi in z veseljem bom povezal vaš blog 🙂

Mislim, da izziv z navpično graf je, da so oznake za graf težje upravljati, ampak gotovo ni nemogoče.

Polje Ime imam:

Obstajata vsaj dve stvari pogledati ven z vašega imena polj.

Prvi, ime polja s presledkom je pobegnil v XSL. To bo verjetno vprašanje tukaj:

        <XSL:spremenljivka ime="totalProposed" 
Izberite="Count(/Vrstice/dsQueryResponse/vrstico[normalizira prostor(@Status) = "Predlaga"])" />

Če vaš "Status" stolpec je dejansko imenovane "kode stanja" potem boste morali sklicevati kot "Status_x0020_Code":

   <XSL:spremenljivka ime="totalProposed" 
Izberite="Count(/Vrstice/dsQueryResponse/vrstico[normalizira prostor(@Status_x0020_Code) = "Predlaga"])" />

Drugi, in jaz sem malo fuzzy, na to, vendar boste morali biti pozorni na polje Ime spremembe. Če vi ime vaš polje "koda stanja" nato kasneje, preimenovati v "AFE Status", ime"notranjega" ne spremeni. Interno ime bo še "kode stanja" in mora biti naveden kot "Status_x0020_Code". "Druga sredstva" povezave lahko pomagajo diagnosticirati in popraviti tovrstne težave.

O da barvo:

Sem izbral "rdeča" ker je prijeten za mene v tem trenutku. Ne bi bilo velik posel za prikaz različnih barvah tako, da zagotavlja več kot le vizualne opis števila, temveč tudi koristno KPI. Na primer, če odstotek "zastala" Osebe AFE je > 10% potem show rdeče, sicer kažejo v črni barvi. Uporaba <XSL:Izberite> da bi to dosegli.

Drugih virov:

Happy preoblikovanje!

<namen />

Naročite se na moj blog!

Predstavi OM podatkov prek seznam po meri (ali, Še drugo OM podatkov Displayor [kot YACC, ampak različnih])

Danes, Sem preživel nekaj ur izsleditve vzrok zadaj sporočilo "vneseno ime stolpca je že v uporabi ali pridržane. Izberite drugo ime."

Zadevne stolpec bo ustvarjen, izbrisana in znova ustvarjena v drugem okolju, tako sem vedel, da ni bilo rezervirano ime. Vendar, Jaz enostavno nisem mogel najti stolpcu kjerkoli preko standardnih SharePoint uporabniški vmesnik na katerem koli mestu v zbirki mest.

Sem napoten na MSDN forumih tukaj in so nepopustljivi Andrew Woodward rtast mi v smeri temeljnih podatkov model predmeta.

Sem šla na Codeplex da bi našli nekaj orodja, ki bi mi pomaga peer v temeljnih podatkov OM in pomoč mi najti težave.

Si se potrudil mnog rokodelsko orodje ter so bili zelo kul in zanimiv, ampak na koncu, uporabniški vmesnik ni bil dovolj dober za moj namen. Jaz jih ne kritizira nikakor, vendar jasno orodje-oblikovalci ni moj problem v mislih ko so ustvarili svoje UI :). Večina ljudi se zdi, da se vlagajo pošteno količino časa in truda v ustvarjanje delovne postaje / odjemalske aplikacije, ki omogočajo poglede drevo, z desno miškino tipko in tako naprej zveza jedilnik. To so lepo in vse, vendar je veliko dela za ustvarjanje top-of-the-line uporabniško izkušnjo, ki je tudi zelo prilagodljiva.

Res potrebno, da odgovor na ta problem. Zazdelo se mi da če bi lahko dobili vse stolpce mesta v zbirki mest v seznam po meri, Lahko filter, razvrstite in ustvarjanje pogledov, ki bi pomoč mi odkriti to menda obstoječih stolpcev (kar je storila, BTW). Sem šel naprej in naredil to in uro ali dve kasneje, imel vse moje stolpce mesta naloži v seznam po meri z združevanje, razvrščanje in tako naprej. Sem našel moj odgovor pet minut kasneje.

Če in ko sem uspešno prevzeti svet, Mislim, da bo odlok, da vsi ponudniki orodij SharePoint resno upoštevati površine njihovih podatkov predmet model v seznam po meri. Na ta način, Imam moč iskanje koli način želim (omejena, seveda, funkcije standardne sharepoint).