Categoria Arkistot: SharePoint-kehitys

Varokaa, rikkomatta muutoksia ItemStyle.xsl

Olin kanssa ItemStyle.xsl muokata ulkoasua Sisältökysely-Web-osan ja oikeassa lounasaikaan, Tein rikkomatta muuttaa xsl. En tajunnut sitä, mutta tämä oli kauaskantoiset vaikutukset koko sivustokokoelmassa. Lähti lounaalle ja palatessani, Huomasin tämän viestin esiintyy joukko paikkoja:

Tämän Web-osan näyttäminen ei onnistu. Vianmääritys, Avaa Web-sivu Windows SharePoint Services-yhteensopivassa HTML-editorissa, kuten Microsoft Office SharePoint Designerissa. Jos ongelma jatkuu, Ota yhteyttä järjestelmänvalvojaan.

Syytin asiakas (tajuamatta vielä että oli minun syytäni tässä vaiheessa) mutta lopulta huomasin että visual Studion intellisense varoitti minua että minulla oli virheellinen XSL. Olen korjata sen ja kaikki aloitti.

Varo darned kanssa ItemStyle.xsl (ja kaikki global XSL-tiedostojen) — pilkotaan vaikuttaa monia esineitä sivustokokoelman.

<Lopeta />

Ruudukon sisällön kyselyn Web osan tulosten näyttäminen / Taulukko

Yleiskatsaus ja tavoite

Kättelyssä, MOSS’ Sisältökysely-Web-osan (CQWP) näyttää tulokset luettelo muodossa, vastaavat hakutulokset. On myös mahdollista näyttää tulokset ruudukkomuodossa (ts. HTML-taulukkomuodossa). Ruudukon muodossa ovat parempia joissakin tapauksissa. Kerron miten saavuttaa tämä vaikutus tässä artiklassa.

Business skenaario

Olen työskennellyt asiakkaan yrityksen laajuinen MOSS mukaa. Olemme suunnitelleet niiden taksonomia siten, että hankkeet ovat ensimmäisen luokan kansalaisia hierarkiassa ja omia ylimmän tason sivuston. Projektipäälliköt luetteloa singleton projektin yhteenvetotiedot, kuten otsikko, talousarvion, odotettu päättymispäivä, jäljellä olevan budjetin ja muut yhteenvetotyyppi-kentät. By "singleton" Tarkoitan muokautetun SharePoint-luettelon taattu sisältää vain yhden kohteen. Yksinkertaistetusti, se näyttää tältä:

kuva

Tekninen lähestymistapa on paljon samaa kuvatulla Täällä (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). CQWP käyttää XSL-muunnoksen päästää HTML selain tehdä.

Olen aina kuvitella tulos ennen pulahtamista XSL, koska XSL on painajainen. Tässä on haluttu tulos:

kuva

HTML kuten tämä tuottaa tuloksen:

<HTML>
 <kehon>
 <Center>
 <taulukko raja= 1>

<!-- Tarrat-->
 <TR BgColor= sininen>
 <TD><fontti väri= valkoinen><b>Projektinimi</b></fontti></TD>
 <TD Tasaa= oikealle><fontti väri= valkoinen><b>Täydellinen päivämäärä</b></fontti></TD>
 <TD Tasaa= oikealle><fontti väri= valkoinen><b>Talousarvion</b></fontti></TD>
 <TD Tasaa= oikealle><fontti väri= valkoinen><b>Todellisten kulujen</b></fontti></TD>
 <TD><fontti väri= valkoinen><b>Yleisen tilan</b></fontti></TD>
 </TR>

<TR>
 <TD>Uudelleen johdin atk-huone.</TD>
 <TD Tasaa= oikealle>02/01/08</TD>
 <TD Tasaa= oikealle>22,500.00</TD>
 <TD Tasaa= oikealle>19,000.00</TD>
 <TD>Käynnissä</TD>
 </TR>

<TR>
 <TD>Säännös palvelimia SQL päivittää</TD>
 <TD Tasaa= oikealle>04/01/08</TD>
 <TD Tasaa= oikealle>7,500.00</TD>
 <TD Tasaa= oikealle>0.00</TD>
 <TD>Suunnitellut</TD>
 </TR>

</taulukko>
 </Center>
 </kehon>
</HTML>

Lähestymistapa

Voit luoda ruudukon seuraavasti:

  1. Tunnistaa verkon osat (Rivi/sarake).
  2. Määrittää ja luoda tarvittavat sivustosarakkeita.
  3. Luoda alisivustot hankkeita ja singleton luettelot.
  4. CQWP lisääminen web-sivun ja määrittää sen etsiä luettelot.
  5. Muokkaa CQWP's XML koota muita sarakkeita.
  6. Muokkaa XSL luoda.

Aion keskittyä numero kuusi. Numerot läpi neljä ovat suoraan eteenpäin ja mikä tahansa CQWP käyttäjä on jo tehnyt. Numero viisi on dokumentoitu hyvin muiden myös Tämä kattava näyttö-shot kuormattuna artikkeli polveutua MSDN Täällä (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) ja Heather Salomonin blogi Täällä (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).

Ja mutterit

Aloittaa ja toteuttaa kohtien 1–5 kohti MSDN dokumentaatio ja Heather Salomonin artikla toimet.

Tässä vaiheessa, Olet lisännyt sinun CQWP sivun ja sinulla on oman <CommonViewFields> määritetty tarvittaessa.

Tavallista ohjeiden, Saan nämä välitulosten:

1. Luo sisältötyyppi, Julkaisusivuston luettelon sisältölajin ja saittien. Tässä on sisällön tyyppi:

kuva

Tässä on sivustorakenne:

kuva

2. Lisätä CQWP kun olet luonut projektin alisivustot ja singleton projektin Yhteenveto-luettelot:

kuva

3. Lisää kaikki lisätiedot haluan kautta <CommonViewFields>:

        <ominaisuus Nimi="CommonViewFields" tyyppi="merkkijono">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</ominaisuus>

Huomaa, että jouduin pitämään ominaisuuskentät yksi tai se ei toimi (CQWP kertoisi minulle, että kysely palauttaa kohteita ei).

4. Tässä vaiheessa, Olemme valmiita siirtyä MSDN-artikkelissa ja kääntää yli Heather Salomonin artiklan. Seuraa hänen ohjeita alkaen lähelle vaihe #5 luoda oman / unghosted versio ItemStyle.xsl. I-kirjain harjoittaa Kanervan neuvoja, läpi vaihe 11 ja saada nämä välitulosten:

4.1: Nimi XSL-mallia seuraavasti:

<XSL:mallin nimi = "Grid" vastaa = "rivi[@Style = "Grid"]" Mode = "itemstyle">

Myös hieman muuttaa hänen ehdotti <XSL:for-each …> lisäämällä <br /> Tag antaa cleaner luettelon:

    <XSL:for-each Valitse="@*">
      P:<XSL:arvo Valitse="Nimi()" /><br/>
    </XSL:for-each>

4.2: Web-osan muokkaaminen, Siirry ulkonäkö ja valitse "Grid" tyyli:

kuva

Käytä muutos ja tässä on tulos:

kuva

Näemme edellä että kentät haluamme (Projektinimi, kulut, tila, jne) ovat käytettävissä meille kun me päästää HTML. Paitsi että, mutta näemme nimet, joilla on viitattava näiden sarakkeiden xsl: ään. Esimerkiksi, me viittaus projektin tilaa "Project_x005F_x0020_Name".

Tässä vaiheessa, lähdetään Heather blogi ja näiden jättiläisten olkapäillä, Lisään oman hieman.

ContentQueryMain.xsl

HUOMAUTUS: Kun teet muutoksia niin ContentQueryMain.xsl kuin ItemStyle.xsl, sinun täytyy tarkistaa tiedostot takaisin ennen kuin näet tekemiesi muutosten vaikutukset.

Grid-making tarkoituksiin, MOSS käyttää kaksi erilaista XSL kuvaa tuloksia näemme CQWP. Tuottaa tuotoksen edellinen vähän, muutettu ItemStyle.xsl. MOSS tosiasiallisesti käyttää toisen XSL-tiedosto, ContentQueryMain.xsl ja yhdessä ItemStyle.xsl sen HTML-koodia. Kuten nimikin, ContentQueryMain.xsl on "main" XSL, joka ohjaa koko virtaus käännös. Se käy läpi kaikki löytötavarat ja välittää ne yksitellen malleja ItemStyle.xsl. Muokkaamalla ItemStyle.xsl tuottaa auki <taulukko> Tag ennen säteilevät ensimmäisen rivin tiedot ja sulkeminen <taulukko> Tag jälkeen säteilevät viimeisen rivin. Tämän tavoitteen saavuttamiseksi, ContentQueryMain.xsl muutetaan välittää parametreja "grid" malli ItemStyle.xsl, "viimeinen rivi" ja "nykyinen rivi". ItemStyle.xsl käyttää näitä ehdollisesti päästää tarvittavat Tunnisteet.

Heather Salomonin tekniikalla, Olemme löytäneet ContentQueryMain.xsl. Se sijaitsee samassa paikassa kuin ItemStyle.xsl. Tämä kuvakaappaus pitäisi auttaa:

kuva

Meidän on tehtävä seuraavat muutokset:

  • Muuttaa xsl-mallia, "CallItemTemplate" että itse asiassa esiin meille ruudukon malli ItemStyle.xsl. Välitämme kaksi parametria ruudukon malliin niin, että se on tiedot ehdollinen luominen, avaaminen ja sulkeminen <taulukko> Tunnisteet.
  • Muokkaa toinen vähän ContentQueryMain.xsl, joka kutsuu "CallItemTemplate" ohi se "LastRow" parametri joten että LastRow välitetään verkkoon malliin.

Etsi malli nimeltä "OuterTemplate.CallItemTemplate" tunnistaa merkkijono:

  <XSL:malli Nimi="OuterTemplate.CallItemTemplate">

Vaihda koko malline seuraavasti:

  <XSL:malli Nimi="OuterTemplate.CallItemTemplate">
    <XSL:Param Nimi="CurPosition" />

    <!--
      Lisää "LastRow" parametri.
      Me vain käyttää sitä, kun kohteen tyyli pass on "Grid".
    -->
    <XSL:Param Nimi="LastRow" />

    <XSL:Valitse>
      <XSL:Milloin testi="@Style = "NewsRollUpItem"">
        <XSL:Käytä malleja Valitse="." tila="itemstyle">
          <XSL:param kanssa Nimi="Edit" Valitse="$cbq_iseditmode" />
        </XSL:Käytä malleja>
      </XSL:Milloin>
      <XSL:Milloin testi="@Style = "NewsBigItem"">
        <XSL:Käytä malleja Valitse="." tila="itemstyle">
          <XSL:param kanssa Nimi="CurPos" Valitse="$CurPosition" />
        </XSL:Käytä malleja>
      </XSL:Milloin>
      <XSL:Milloin testi="@Style = "NewsCategoryItem"">
        <XSL:Käytä malleja Valitse="." tila="itemstyle">
          <XSL:param kanssa Nimi="CurPos" Valitse="$CurPosition" />
        </XSL:Käytä malleja>
      </XSL:Milloin>

      <!--
              Nykyinen asema ja lastrow siirtyy verkkoon itemstyle.xsl malli.
              ItemStyle.xsl käyttää tätä päästää auki ja sulkeminen <taulukko> Tunnisteet.
      -->
      <XSL:Milloin testi="@Style = "Grid"">
        <XSL:Käytä malleja Valitse="." tila="itemstyle">
          <XSL:param kanssa Nimi="CurPos" Valitse="$CurPosition" />
          <XSL:param kanssa Nimi="Viimeksi" Valitse="$LastRow" />
        </XSL:Käytä malleja>
      </XSL:Milloin>

      <XSL:muuten>
        <XSL:Käytä malleja Valitse="." tila="itemstyle">
        </XSL:Käytä malleja>
      </XSL:muuten>
    </XSL:Valitse>
  </XSL:malli>

Kommentit kuvaavat muutosten tavoitteena.

Tietysti, "OuterTemplate.CallItemTemplate" kutsutaan itse toisesta mallista. Etsi mallin etsimällä tämän merkkijonon:

<XSL:malli Nimi="OuterTemplate.Body">

Selata ohjeita OuterTemplate.Body ja LastRow-parametrin lisääminen seuraavasti (JavaScript kommentin kursiivilla):

<XSL:Call-template Nimi="OuterTemplate.CallItemTemplate">
  <XSL:param kanssa Nimi="CurPosition" Valitse="$CurPosition" />
  <!-- LastRow-parametrin lisääminen. -->
  <XSL:param kanssa Nimi="LastRow" Valitse="$LastRow"/>
</XSL:Call-template>

Kaiken tämän jälkeen, vihdoinkin asiat asennettu oikein niin, että meidän ItemStyle.xsl voi lähettää <taulukko> Tunnisteet oikeassa paikassa.

ItemStyle.Xsl

HUOMAUTUS: Uudelleen, Tarkista ItemStyle.xsl kun olet tehnyt muutokset siten, että näiden muutosten vaikutus.

Meillä kaksi tehtävää:

  • Korvata koko ruudukon malli. Voi kopioida/liittää alla.
  • Lisää jotkut hölynpölyä ulkopuolella mallipohjan määritys, jonka avulla "formatcurrency" toimii. (Voit kertoa, että minulla on heikko kahva XSL).

Ensimmäinen, yläosassa ItemStyle.xsl, Lisää tämä rivi:

  <!-- Jotkut hölynpölyä, jonka avulla voimme näyttää USA: n. valuutta. -->
  <XSL:desimaalin-format Nimi="henkilökunta" numero="D" />

  <XSL:malli Nimi="Oletus" ottelu="*" tila="itemstyle">

Huomaa, että olen lisännyt sen suoraan ennen <XSL:mallin nimi = "laiminlyöminen" …> määritelmä.

Seuraava, Siirry takaisin verkkoon malliin. Korvaa koko ruudukon mallin koodi alla. Se huolellisesti kommentoi, mutta älä epäröi sähköpostia minulle tai jättää kommentteja blogiin, jos sinulla on kysyttävää.

  <XSL:malli Nimi="Ruudukko" ottelu="Rivi[@Style = "Grid"]" tila="itemstyle">

    <!--
      ContentMain.xsl kulkee CurPos ja viime.
      Käytämme näitä ehdollisesti päästää auki ja sulkeminen <taulukko> Tunnisteet.
    -->
    <XSL:Param Nimi="CurPos" />
    <XSL:Param Nimi="Viimeksi" />

    <!-- Seuraavat muuttujat ovat muuttamattomia standard ItemStyle.xsl -->
    <XSL:muuttuja Nimi="SafeImageUrl">
      <XSL:Call-template Nimi="OuterTemplate.GetSafeStaticUrl">
        <XSL:param kanssa Nimi="UrlColumnName" Valitse=""ImageUrl""/>
      </XSL:Call-template>
    </XSL:muuttuja>
    <XSL:muuttuja Nimi="SafeLinkUrl">
      <XSL:Call-template Nimi="OuterTemplate.GetSafeLink">
        <XSL:param kanssa Nimi="UrlColumnName" Valitse=""LinkUrl""/>
      </XSL:Call-template>
    </XSL:muuttuja>
    <XSL:muuttuja Nimi="DisplayTitle">
      <XSL:Call-template Nimi="OuterTemplate.GetTitle">
        <XSL:param kanssa Nimi="Otsikko" Valitse="@Title"/>
        <XSL:param kanssa Nimi="UrlColumnName" Valitse=""LinkUrl""/>
      </XSL:Call-template>
    </XSL:muuttuja>
    <XSL:muuttuja Nimi="LinkTarget">
      <XSL:Jos testi="@OpenInNewWindow = "True"" >_blank</XSL:Jos>
    </XSL:muuttuja>

    <!--
      Tässä määrittelemme muuttujan, "tableStart".  Tämä on HTML-koodia, että käytämme määritellä avaaminen sekä taulukon sarakkeiden otsikot.  Huomaa, että jos CurPos = 1, Se sisältää HTML-koodin CDATA-tag.
      Muuten, se on tyhjä.

      TableStart arvo on emited aina ItemStyle kutsutaan ContentQueryMain.xsl.
    -->
    <XSL:muuttuja Nimi="tableStart">
      <XSL:Jos testi="$CurPos = 1">
        <![CDATA[
        <taulukon reunan = 1>
          <TR bgcolor = "blue">
            <TD><fonttiväri = "valkoinen"><b>Projektinimi</b></fontti></TD>
            <TD align = "oikealle"><fonttiväri = "valkoinen"><b>Täydellinen päivämäärä</b></fontti></TD>
            <TD align = "oikealle"><fonttiväri = "valkoinen"><b>Talousarvion</b></fontti></TD>
            <TD align = "oikealle"><fonttiväri = "valkoinen"><b>Todellisten kulujen</b></fontti></TD>
            <TD><fonttiväri = "valkoinen"><b>Yleisen tilan</b></fontti></TD>
          </TR>
        ]]>
      </XSL:Jos>
    </XSL:muuttuja>

    <!--
      Toinen muuttuja, tableEnd määritellään yksinkertaisesti sulkeminen taulukko tag.

      Kuten tableStart, se on aina emited.  Siksi sen arvo määritetään ehdollisesti perustuu onko olen ollut ohitimme viimeisen rivin ContentQueryMain.xsl.
    -->
    <XSL:muuttuja Nimi="tableEnd">
      <XSL:Jos testi="$CurPos = $Last">
        <![CDATA[ </taulukko> ]]>
      </XSL:Jos>
    </XSL:muuttuja>

    <!--
      Aina päästää tableStart sisältö.  Jos tämä ei ole ensimmäinen rivi ContentQueryMain.xsl ohi, sitten tiedämme, että sen arvo on tyhjä.

      Poistaa tuotannon pakenevat koska kun tableStart se ole tyhjä, Se sisältää varsinaisen HTML, että haluamme menettäisi jyrsiä.  Jos me emme puolestaan tarjoa XSL-jäsentimen poistaa tuotannon paeta, se tuottaa juttuja"&lt;taulukko&gt;" sen sijaan, että"<taulukko>".
    -->
    <XSL:arvo Valitse="$tableStart" Poista lähtö paeta="Kyllä"/>


    <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:arvo Valitse="@Project_x005F_x0020_Name"/>
      </TD>

      <TD Tasaa="oikeus">
        <XSL:arvo Valitse="@Project_x005F_x0020_End_x005F_x0020_Date"/>
      </TD>

      <TD Tasaa="oikeus">
        <XSL:Call-template Nimi="FormatCurrency">
          <XSL:param kanssa Nimi="arvo" 
Valitse="@Project_x005F_x0020_Budget"></XSL:param kanssa> </XSL:Call-template> </TD> <TD Tasaa="oikeus"> <XSL:Call-template Nimi="FormatCurrency"> <XSL:param kanssa Nimi="arvo" Valitse="@Project_x005F_x0020_Expenses">
</XSL:param kanssa> </XSL:Call-template> </TD> <TD> <XSL:arvo Valitse="@Project_x005F_x0020_Status"/> </TD> <!-- Kaikki seuraavat kommentoi pois selventää asioita. Kuitenkin, tuo se takaisin ja kamaa se osaksi <TD> nähdäksesi niiden vaikutuksen. --> <!-- <div id = "linkitem" Class = "tavaraerän"> <XSL:Jos testi = "merkkijonon pituus($SafeImageUrl) != 0> <div class = & quoSafeImageUrl vasemmalle "> <href = "{$SafeLinkUrl}" Target = "{$LinkTarget}"> <IMG class = "kuva-kiinteän leveys" src = "{$SafeImageUrl}"
ALT = "{@ImageUrlAltText}"/> </a> </div> </XSL:Jos> <div class = "linkin kohde"> <XSL:Call-template
Name="OuterTemplate.CallPresenceStatusIconTemplate"/> <href = "{$SafeLinkUrl}"
Target = "{$LinkTarget}" otsikko = "{@LinkToolTip}"> <XSL:arvo ja valitse = "$DisXSLyTitle" /> </a> <div class = "kuvaus"> <XSL:arvo-ja select="@Description" /> </div> </div> </div>
--> </TR> <!-- Päästää sulkeminen taulukko tag. Jos meillä ei ole viimeinen rivi, Tämä on tyhjä. --> <XSL:arvo Valitse="$tableEnd" Poista lähtö paeta="Kyllä"/> </XSL:malli> <XSL:malli Nimi="FormatCurrency"> <XSL:Param Nimi="arvo" Valitse="0" /> <XSL:arvo Valitse='numeron muotoileminen($arvo, "$DDD,DDD,DDD.DD", "henkilökunta")' /> </XSL:malli>

Standard WSS/MOSS tiedonsyöttönäyttöjen eivät tue CSS ja Avattavat luetteloruudut (tai muut sisäisessä-viestintä)

PÄIVITYS (04/2008): Tämä suuri blogimerkinnän osoittaa hyvää javascript perustuu lähestymistavan tähän ongelmaan: http://webborg.blogspot.com/2008/04/add-functions-and-events-to-sharepoint.html

PÄIVITYS II: (04/2008): Tämä blogimerkintä näyttää lupaavalta: http://www.cleverworkarounds.com/2008/03/13/free-mosswss-2007-web-part-hide-controls-via-javascript/

Useita kertoja viikossa, Jos ei päivittäin, foorumin käyttäjät kuvata vaatimus siitä, että saavutettaisiin yleensä kautta CSS avattavista. Esimerkiksi, Minulla on kaksi avattavan luettelon ohjausobjekteja:

  • Luettelo Yhdysvaltain. valtioiden
  • Luettelo Yhdysvaltain. Kaupungit.

Vastuussa UI tarjoajana, Me haluamme sen puitteissa:

  • Paul valitsee USA: n. valtion avattavan luettelon.
  • Tämä aiheuttaa kaupunkien avattavasta suodattaa vain ne kaupungit, jotka kuuluvat valittu tila.
  • Paul valitsee kaupunki suodatetun luettelon.

Ei ole OOBE tukea tätä ominaisuutta. Itse asiassa, ei ole OOB tukea kaikenlaista suorinta sisäinen viestintä. Tämä sisältää ohjelmallisesti piilossa/mahdollistaminen/tehdä kykenemättömäksi kenttien kentän muuttuessa muualla lomakkeelle.

Todellinen tavoite tämän artikkelin jotta kuvailla mahdollisia ratkaisuja ja nämä vaihtoehdot ovat tietääkseni niitä:

  1. Kehittää mukautetun sarakkeen tyyppi. Custom sarakkeiden kehittäjä, sinulla on täysi määräysvalta "world" kyseisen mukautetun sarakkeen. Voit toteuttaa CSS-avattavasta näin.
  2. Harkitse työnkulun. Joissakin tapauksissa, haluat määrittää automaattisesti arvon kentän toisen kentän arvo. Tässä tapauksessa, Voit yleensä yrittää käyttää lasketun sarakkeen, mutta joskus, se vain ei saada työ. SharePoint Designer on suhteellisen hallinnoida sopiva vaihtoehto koodi ja visual studio pudottamassa. Jos menet tätä reittiä, olla tietoinen ongelmasta, jonka Tämä artikkeli (http://paulgalvin.spaces.live.com/blog/cns!CC1EDB3DAA9B8AA!405.entry).
  3. Tapahtumakäsittelijät: Kuten työnkulun, Tämä on jälkeen tosiasia ratkaisu. Tapahtumankäsittelijä on .NET-kokoonpano (C#, VB.NET) SharePoint antaa hallinnan. Kehität objektilla luettelon tietoja (ja koko objektimalli) ja tehdä tarvittavat laskennassa.
  4. Luo mukautettu tapahtuman lomakkeita SharePoint Designerin avulla. Minulla ei ole omakohtaista kokemusta näin, but I hear they are doing good things with NewForm.aspx these days 🙂
  5. Roll oman ASP.NET tiedot merkinnän toiminnon (erillinen web-sivuna tai web-osana) ja käyttää sitä.

Jos joku tietää muita ja/tai parempia vaihtoehtoja, Lähetä kommentti ja minä päivittää tämän jälkeen kehon.

<Lopeta />

Technorati Tags:

Luo pylväskaaviot SharePoint

Yleiskatsaus:

(PÄIVITYS 12/04/07: Toinen mielenkiintoinen voimavara lisätä toinen blogi, joka käsittelee tätä kautta erittäin mielenkiintoinen web-osan yhdistäminen)

Tämän blogimerkinnän kuvataan pylväskaavion luominen SharePoint. Tämä toimii WSS ja SAMMAL ympäristöissä kuin se vain riippuu tietonäkymä-web-osa.

Yleinen lähestymistapa on seuraava:

  1. Luo luettelo tai Kirjasto, joka sisältää kaavion tiedot.
  2. Paikka liittyvä tiedostokirjasto / mukautetun luettelon sivulle ja muuntaa sen tietonäkymän web-osa (DVWP).
  3. Muokkaa DVWP XSL HTML-koodia, joka näyttää kaaviona.

Business skenaario / Asennus:

Olen luonut mukautetun luettelon standardin asema-sarakkeen ja yhden ylimääräisen sarakkeen, "Tila". Tätä mallia (hyvin yksinkertaistetusti) "lupa kustannuksella" skenaario, jossa otsikko tarkoittaa hankkeen ja tilan arvo luettelosta:

  • Ehdotettu
  • Prosessissa
  • Pysähtynyt

Tavoitteena on tuottaa interaktiivinen vaaka pylväsdiagrammi, joka osoittaa nämä tilan koodit.

On asuttu luettelossa, ja se näyttää tältä:

kuva

Luoda tietonäkymä-Web-osa:

Luoda DVWP lisäämällä mukautetun luettelon sivulle (sivuston sivulla minun tapauksessani) ja seuraa ohjeita Täällä (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!395.entry).

Lisäksi yksinkertaisesti perustamalla DVWP, Tarvitsemme myös kaikki saatavilla rivit henkilöhaku-ominaisuusikkunan. Minulle, Tämä näyttää tältä:

kuva

Tässä vaiheessa, Aina lähellä SPD ja selain. Olen uudelleen avaa sivu selaimella. Näin vältetään vahingossa sotkee web-osan asettelu sivulla.

Muokkaa XSLT:

Nyt on aika muuttaa XSLT.

Käytän aina visual studio tähän. (Ks. Täällä tärkeä huomautus jokseenkin intellisense, jotka auttavat sinua paljon).

Luo tyhjä projekti lisätä neljä uusia tiedostoja (ilmaisun "alkuperäinen" ja "New" tarvittaessa):

  • Original.XSLT
  • New.XSLT
  • Alkuperäinen Params.xml
  • Uusi Params.xml

Minun tapauksessani, se näyttää tältä:

kuva

Muokkaa web-osaa ja kopioida params ja XSL "alkuperäinen" versio Visual Studiossa.

Tavoitteena on aiheuttaa XSL tuloksia saamme takaisin DVWP kyselystä HTML-tiedostoksi, joka tekee kaaviona.

Tätä varten, se auttaa ensin miettiä, mitä HTML pitäisi näyttää ennen saada hämmentävät insanity, jota kutsutaan "XSL". (Ollakseni selkeä, Seuraavassa on vain esimerkki; Älä kirjoita tai kopioi/liitä visual studiossa. Annan täyden iskun lähtökohta joka myöhemmällä kirjoittaa ylös). Seuraavassa näyte kuviossa muodostetaan kohti heti HTML:

Näytepalkkikaavio

Vastaava HTML:

<HTML>
<kehon>
<Center>
<taulukko leveys = 80 %>
<TR><TD><Center>Vaakasuora palkki kaavio</TD></TR>
<TR>
<TD align = "center">
<taulukon reunan = "1" leveys = 80 %>
<TR>
<TD leveys = 10 %>Avoinna</TD>
<TD><taulukon cellpadding ="0" CellSpacing-arvon ="0" border = 0 width = 50 %><TR bgcolor = punainen><TD>&nbsp;</TD></TR></taulukko></TD>
</TR>
<TR>
<TD leveys = 10 %>Suljettu</TD>
<TD><taulukon cellpadding ="0" CellSpacing-arvon ="0" border = 0 width = 25 %><TR bgcolor = punainen><TD>&nbsp;</TD></TR></taulukko></TD>
</TR>
<TR>
<TD leveys = 10 %>Pysähtynyt</TD>
<TD><taulukon cellpadding ="0" CellSpacing-arvon ="0" border = 0 width = 25 %><TR bgcolor = punainen><TD>&nbsp;</TD></TR></taulukko></TD>
</TR>
</taulukko>
</TD>
</TR>
</taulukko>
</kehon>
</HTML>

Käytin kuollut yksinkertainen tapa luoda minun baareja asettamalla taustavärin rivi "red".

Take-away täällä on: Lopulta, Me on luoda HTML rivejä ja sarakkeita.

XSLT-mallin:

Olen kopioinut XSLT, joka luo vaaka pylväskaavio. Se on melko hyvin kommentoineet niin ei lisätä paljon lukuun ottamatta nämä muistiinpanot:

  • Aloitin oletusarvoista xsl: ää, SharePoint Designer antoi minulle, kun olen luonut DVWP.
  • Minulla oli mahdollisuus kaataa tämä SPD: n 657 rivit 166 rivit.
  • Ei pelleillä parametrit XML-tiedosto (joka on erillään XSL ja tiedät mitä tarkoitan, kun menet muokata DVWP, itse; on kaksi tiedostoa, voit muokata). Kuitenkin, asian yksinkertaistamiseksi, Lähes kaikki heistä poistaminen XSL. Jos haluat käyttää parametreista, sinun tarvitsee vain lisätä muuttujien määritykset takaisin XSL. Se on helppoa, koska sinulla on alkuperäinen XSL muuttujien määritykset visual studio-projektiin.
  • Sinun pitäisi pystyä kopioi ja liitä tämä suoraan visual studio-projektiin. Sitten, Poista puheluni ja aseta puhelut ja "ShowBar".
  • Toimii luomalla porautuminen <href> Näin: http://server/List?FilterField1=fieldname&FilterValue1=actualFilterValue. Tämä tekniikka voi olla hyötyä muissa yhteyksissä. Aluksi, Ajattelin, että minun täytyisi noudattaa monimutkaisempi muoto: http://server/List/AllItems.aspx?View={guid}&FilterField1=blah&FilterValue1=blah, mutta minun ympäristössä ei ole välttämätön. Luettelon URL-osoite on siirtynyt meille SharePoint joten tämä on melko helppo yleistää.

Tässä se on:

<XSL:Stylesheet versio="1.0" Jätä pois-tulos-etuliitteet="RS z o s ddwrt dt msxsl" 
xmlns:msxsl="urn:schemas-microsoft-com:XSLT" xmlns:XSL="http://www.w3.org/1999/XSL/Transform"
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="urn:schemas-microsoft-com:toimisto" xmlns:s="UUID:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"
xmlns:DT="UUID:C2F41010-65B3 - 11d 1-A29F-00AA00C14882" xmlns:RS="urn:schemas-microsoft-com:Rivijoukon" xmlns:z="#RowsetSchema"
xmlns:ddwrt2="urn:FrontPage:sisäinen"
> <XSL:lähtö menetelmä="HTML" luetelmakohta="Ei" /> <XSL:desimaalin-format NaN="" /> <XSL:Param Nimi="ListUrlDir"></XSL:Param> <!-- Tarvitse tätä tukea poraa alas. --> <XSL:malli ottelu="/" xmlns:SharePoint="Microsoft.SharePoint.WebControls"
xmlns:__designer=http://schemas.microsoft.com/WebParts/v2/DataView/designer xmlns:ASP="http://schemas.microsoft.com/ASPNET/20"
> <XSL:muuttuja Nimi="dvt_StyleName">Taulukko</XSL:muuttuja> <XSL:muuttuja Nimi="Rivit" Valitse="/dsQueryResponse/rivi/rivi" /> <XSL:muuttuja Nimi="dvt_RowCount" Valitse="määrä($Rivit)" /> <XSL:muuttuja Nimi="IsEmpty" Valitse="$dvt_RowCount = 0" /> <XSL:muuttuja Nimi="dvt_IsEmpty" Valitse="$dvt_RowCount = 0" /> <XSL:Valitse> <XSL:Milloin testi="$dvt_IsEmpty"> Tietoja ei ole kaavio!<br/> </XSL:Milloin> <XSL:muuten> <!-- Mielenkiintoisia juttuja alkaa tästä. Meidän on määriteltävä pari muuttujat kullakin rivillä kaaviossa: määrä ja prosenttiosuus kokonaissummasta. --> <XSL:muuttuja Nimi="totalProposed" Valitse="määrä(/dsQueryResponse/rivi/rivi[normalisoi tila(@Status) = "Ehdotettu"])" /> <XSL:muuttuja Nimi="percentProposed" Valitse="$totalProposed div $dvt_RowCount" /> <XSL:muuttuja Nimi="totalInProcess" Valitse="määrä(/dsQueryResponse/rivi/rivi[normalisoi tila(@Status) = "Keskeneräiset"])" /> <XSL:muuttuja Nimi="percentInProcess" Valitse="$totalInProcess div $dvt_RowCount" /> <XSL:muuttuja Nimi="totalStalled" Valitse="määrä(/dsQueryResponse/rivi/rivi[normalisoi tila(@Status) = "Pysähtynyt"])" /> <XSL:muuttuja Nimi="percentStalled" Valitse="$totalStalled div $dvt_RowCount" /> <!-- Määrittelemme HTML taulukossa täällä. Joitakin SharePoint vakiotyyleistä täällä johdonmukaisuuden lainaaminen. Uskon, että se asettaa etusijalle maailmanlaajuisen css-tiedostoon tekemäsi muutokset myös teeman ohittaa. --> <taulukko leveys="100%" CellSpacing-arvon="0" CellPadding="2" tyyli="oikeassa reunassa: 1 kiinteä #C0C0C0; reunus alhaalta: 1 kiinteä #C0C0C0; reunatyyli vasemmalle: kiinteä; vasen reuna: 1; Border-top-style: kiinteä; Border-top-width: 1;"> <TR> <TD Tasaa="Center"> <taulukko raja="1" leveys="100%"> <!-- Kunkin tilan, että haluamme kuvio, Me kutsumme "esityksiä järjestävä eloisa Show" malli. Se: 1. Rivin otsikko. Tämä muuttuu hyperlinkki. 2. Prosenttia (muuttujan ylhäältä). 3. Pelkkä kenttänimi pohjana olevan luettelon koodi. Tämä ei tarvitse vastaa näyttönimeä. 4. Kenttäarvon hyväksytty #3. 5. Tämän tilakoodin kohteiden määrä (ei kaikki tilakoodit yhteensä). Se säteilee <TR></TR> ja horisontaalisen pylväskaavion linja. Kutsumme tätä mallia kunkin tilakoodi, haluamme nähdä. --> <XSL:Call-template Nimi="Esityksiä järjestävä eloisa Show"> <XSL:param kanssa Nimi="BarDisplayLabel" Valitse="Ehdotettu""/> <XSL:param kanssa Nimi="BarPercent" Valitse="$percentProposed"/> <XSL:param kanssa Nimi="QueryFilterFieldName" Valitse=""Status""/> <XSL:param kanssa Nimi="QueryFilterFieldValue" Valitse="Ehdotettu""/> <XSL:param kanssa Nimi="TotalItems" Valitse="$totalProposed"></XSL:param kanssa> </XSL:Call-template> <XSL:Call-template Nimi="Esityksiä järjestävä eloisa Show"> <XSL:param kanssa Nimi="BarDisplayLabel" Valitse=""Pysähtynyt""/> <XSL:param kanssa Nimi="BarPercent" Valitse="$percentStalled"/> <XSL:param kanssa Nimi="QueryFilterFieldName" Valitse=""Status""/> <XSL:param kanssa Nimi="QueryFilterFieldValue" Valitse=""Pysähtynyt""/> <XSL:param kanssa Nimi="TotalItems" Valitse="$totalStalled"></XSL:param kanssa> </XSL:Call-template> <XSL:Call-template Nimi="Esityksiä järjestävä eloisa Show"> <XSL:param kanssa Nimi="BarDisplayLabel" Valitse=""Keskeneräiset""/> <XSL:param kanssa Nimi="BarPercent" Valitse="$percentInProcess"/> <XSL:param kanssa Nimi="QueryFilterFieldName" Valitse=""Status""/> <XSL:param kanssa Nimi="QueryFilterFieldValue" Valitse=""Keskeneräiset""/> <XSL:param kanssa Nimi="TotalItems" Valitse="$totalInProcess"></XSL:param kanssa> </XSL:Call-template> </taulukko> </TD> </TR> </taulukko> </XSL:muuten> </XSL:Valitse> </XSL:malli> <!-- Tämä malli toimi yksittäisten rivien näyttäminen pylväskaavio. Voit todennäköisesti tehdä useimmat säätämistä täällä. --> <XSL:malli Nimi="Esityksiä järjestävä eloisa Show"> <XSL:Param Nimi="BarDisplayLabel" /> <!-- ilmoittaa --> <XSL:Param Nimi="BarPercent"/> <!-- Prosenttiosuus kokonaissummasta. --> <XSL:Param Nimi="QueryFilterFieldName"/> <!-- Voidaan siirtyä kyselyn & suodatin --> <XSL:Param Nimi="QueryFilterFieldValue"/> <!-- Voidaan siirtyä kyselyn & suodatin --> <XSL:Param Nimi="TotalItems" /> <!-- Tämä barlabel määrä --> <TR> <!-- Baarissa etiketti itse. --> <TD luokan="MS-formbody" leveys="30%"> <!-- Tämä seuraava joukko lausuntoja rakentaa kyselymerkkijonon, joka antaa meille mahdollisuuden siirtyä alas suodatetun näkymän pohjana olevia tietoja. Teemme muutamia asioita täällä käyttää: 1. Voimme siirtää FilterField1 ja FilterValue1 luettelo suodattaa kohteet. 2. SharePoint on ohi tärkein parametri meille, ListUrlDir, joka viittaa pohjana olevan luettelon, josta tämä DVWP on "jatkuva". Ei ole XSL hauskaa? --> <XSL:teksti Poista lähtö paeta="Kyllä"> <![CDATA[<href ="]]></XSL:teksti> <XSL:arvo Valitse="$ListUrlDir"/> <XSL:teksti Poista lähtö paeta="Kyllä"><![CDATA[?FilterField1 =]]></XSL:teksti> <XSL:arvo Valitse="$QueryFilterFieldName"/> <XSL:teksti Poista lähtö paeta="Kyllä"><![CDATA[&FilterValue1 =]]></XSL:teksti> <XSL:arvo Valitse="$QueryFilterFieldValue"/> <XSL:teksti Poista lähtö paeta="Kyllä"><![CDATA[">]]></XSL:teksti> <XSL:arvo Valitse="$BarDisplayLabel"/> <XSL:teksti Poista lähtö paeta="Kyllä"><![CDATA[</a>]]></XSL:teksti> <!-- Seuraavan vähän jotkut numerot näkyvät muoto: "(yhteensä / % yhteensä)" --> (<XSL:arvo Valitse="$TotalItems"/> / <!-- Tämä luo mukava prosenttia otsikko meille. Kiitos, Microsoft! --> <XSL:Call-template Nimi="percentformat"> <XSL:param kanssa Nimi="prosenttia" Valitse="$BarPercent"/> </XSL:Call-template>) </TD> <!-- Lopuksi, päästää <TD> Tag varten bar itse.--> <TD> <taulukko CellPadding="0" CellSpacing-arvon="0" raja="0" leveys="{kierros($BarPercent * 100)+1}%"> <TR BgColor="punainen"> <XSL:teksti Poista lähtö paeta="Kyllä"><![CDATA[&nbsp;]]></XSL:teksti> </TR> </taulukko> </TD> </TR> </XSL:malli> <!-- Tämä on otettu suoraan joitakin XSL löysin MS-mallissa. --> <XSL:malli Nimi="percentformat"> <XSL:Param Nimi="prosenttia"/> <XSL:Valitse> <XSL:Milloin testi="numeron muotoileminen($prosenttia, '#,##0%;-#,##0%')= "NaN"">0%</XSL:Milloin> <XSL:muuten> <XSL:arvo Valitse="numeron muotoileminen($prosenttia, '#,##0%;-#,##0%')" /> </XSL:muuten> </XSL:Valitse> </XSL:malli> </XSL:Stylesheet>

Tulokset:

XSL ylhäältä Luo tämä kaavio:

kuva

Poraa tietoja klikkaamalla tilakoodi:

kuva

Päätelmänne?:

Pidäkin tätä?

Rakastan graafinen käsite, mutta vihaan sitä, että minun täytyy mennä ja tehdä niin paljon käsi-koodaus. Olen antanut ajattelematta onko pidäkin ja olen optimistinen, mutta olen myös hieman peloissaan, että voi olla seinään jossain tiellä, joka ei tarjoa mitään työ-ympäristössä. Jos jollakulla on hyviä ideoita tämän, Merkitse muistiin kommentteja tai email we.

Pystysuora kaaviot:

Tämä on horisontaalinen pylväskaavio. Se on varmasti mahdollista luoda pystysuoran kaavio. Meidän täytyy vain muuttaa HTML-koodia. Haluaisin aloittaa samalla tavalla: Luo HTML-edustus pystysuora pylväskaavio ja sitten selvittää, miten tästä kautta XSL. Jos joku on kiinnostunut, että, Voi olla suostutella kokeilla sitä ja poistaa kireyttä. Jos joku on jo tehnyt niin, kerro siitä minulle, ja linkin mielelläni blogiisi 🙂

Haaste pystysuoran kaavio on kaavion otsikot ovat vaikeampi hallita, mutta ei varmaankaan mahdotonta.

Kentän nimi Gotcha:

Ainakin kaksi asiaa kannattaa varoa kanssa kenttien nimet.

Ensimmäinen, kenttänimen välilyönnillä on ohitettava XSL. Tämä on todennäköisesti kysymys:

        <XSL:muuttuja Nimi="totalProposed" 
Valitse="määrä(/dsQueryResponse/rivi/rivi[normalisoi tila(@Status) = "Ehdotettu"])" />

Jos "-tila" sarakkeen nimi on itse asiassa "tilakoodi" sinun täytyy viitata "Status_x0020_Code":

   <XSL:muuttuja Nimi="totalProposed" 
Valitse="määrä(/dsQueryResponse/rivi/rivi[normalisoi tila(@Status_x0020_Code) = "Ehdotettu"])" />

Toinen, ja olen hieman fuzzy tästä, mutta sinun täytyy olla varuillaan kentän nimi muuttuu. Jos nimeät kentän "tilakoodi" ja sitten myöhemmin, sen nimeksi "AFE tila", "sisäinen nimi" ei muuta. Sisäinen nimi voi silti "tilakoodi" ja on viittaus "Status_x0020_Code". "Muut varat" linkit voivat auttaa diagnosoimaan ja korjaamaan tällaiset ongelmat.

Siitä, että väri:

Otin "punainen" koska se on miellyttää minua tällä hetkellä. Ei olisi iso juttu näyttää eri värejä niin, että enemmän kuin vain visuaalinen kuvaus useita, mutta myös hyödyllisiä KPI. Esimerkiksi, Jos prosenttiosuus "pysähtynyt" AFE ystävät on > 10% sitten näyttää punainen, muuten näyttää musta. Käyttö <XSL:Valitse> Tämä.

Muita resursseja:

Onnellinen transforming!

<Lopeta />

Tilaa blogiin!

Esittää OM tiedot kautta mukautettu luettelo (tai, Vielä toisen OM tietojen Displayor [kuten YACC, mutta eri])

Tänään, Käytin muutama tunnin jäljittää viestin "antamasi sarakkeen nimi on jo käytössä tai varattu perussyy. Valitse toinen nimi."

Kyseinen sarake onnistunut, poistetaan ja luodaan uudelleen toiseen ympäristöön, joten tiesin, että se ei ollut varattu. Kuitenkin, En vain löytänyt sarakkeen kaikkialla kautta standardi SharePoint-käyttöliittymän milloin tahansa sivuston sivustokokoelman.

I lähetetty MSDN-keskustelupalstoissa täällä ja lannistumaton Andrew Woodward terävä we kotona haara taustatietoja objektin malli.

Lähti CodePlex löytää joitakin työkaluja, joka auttaa minua kurkistaa OM taustatietoja ja auttaa minua löytämään ongelmia.

Olen kokeillut useita työkaluja ja he olivat hyvin viileä ja mielenkiintoinen, mutta loppujen lopuksi, UI ei ollut tarpeeksi hyvä, minun tarkoitukseen. En arvostele niitä millään tavalla, mutta selvästi avulla päättäjille ei ole minun ongelmani mielessä luotaessa niiden käyttöliittymä :). Useimmat ihmiset näyttävät sijoittaa paljon aikaa ja vaivaa luoda työasema / asiakas ahkeruus että antaa puunäkymään, joista, Napsauta hiiren kakkospainikkeella asiayhteys ruokalista ja niin edelleen. Nämä ovat mukavia ja kaikki, mutta se on paljon työtä luoda huippu käyttökokemuksen, joka on myös erittäin joustava.

Olen todella tarvitaan vastauksen tähän ongelmaan. Se tapahtui minulle, että jos voisin saada kaikki sivuston sarakkeissa sivustokokoelman mukautettuun luetteloon, Voitiin suodattaa, lajitella ja luoda näkymiä, joka auttaa minua löytämään muka luotua saraketta (mikä tapahtui, BTW). Menin eteenpäin ja teki se ja tunnin tai kaksi myöhemmin, mukautetun luettelon ryhmittely ladataan minun sivustosarakkeita, lajittelu- ja niin edelleen. Löysin vastauksen viisi minuuttia myöhemmin.

Jos onnistuneesti valloittaa maailman, Mielestäni päätös kaikkien SharePoint työkalut tarjoajien on vakavasti harkittava, pintaan niiden objektin mallitiedot mukautetun luettelon. Näin, Minulla on etsiä jokin elämäntapa i-kirjain haluta (rajoittaa, Tietysti, standard sharepoint ominaisuudet).