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ä:
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:
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:
- Tunnistaa verkon osat (Rivi/sarake).
- Määrittää ja luoda tarvittavat sivustosarakkeita.
- Luoda alisivustot hankkeita ja singleton luettelot.
- CQWP lisääminen web-sivun ja määrittää sen etsiä luettelot.
- Muokkaa CQWP's XML koota muita sarakkeita.
- 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:
Tässä on sivustorakenne:
2. Lisätä CQWP kun olet luonut projektin alisivustot ja singleton projektin Yhteenveto-luettelot:
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:
Käytä muutos ja tässä on tulos:
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:
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"<taulukko>" 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" |
Tämä on uskomattoman hyödyllinen. Kiitos!
Aah… Siksi minun luettelotyyli erinimisiä ja tajunnut, että ContentQueryMain.xsl se etsii "style":
<XSL:Kun test="@Style='NameOfMyStyle'">
Se nimettiin se toimi. 🙂
Se jokseenkin työntekijä ajaksi we: Onnistun tuotannon </taulukko> lopputunnistetta oikein, mutta alkaa tag puuttuu. Näyttää testin = "$CurPos = 1" ei palauta totta. Mutta miksi?
Great Post. Paul olen tehnyt kaikki edellä mainitut asiat. Olen kysely, Miten voin saavuttaa "yhteensä todelliset kulut summa" tai kahden sarakkeen arvojen summan.
Oletko tehnyt mitään työn kanssa custom ContentQueryMain ja ItemStyle xsl-tiedostojen luominen? Vuoksi pyydän on, että en halua huolehtia minun mukautettuja tyylejä korvata korjauksia tai päivityksiä. Onko sinulla esimerkkejä? Olen yrittänyt tehdä identtinen kopio ContentQueryMain.xsl ja lataamalla uuden mukautetun kopio tyylikirjastoon. Kun viittaus xsl-tiedosto .webpart MainXslLink ominaisuudessa, Saan 401 ei saa. Mukautettu xsl-tiedosto on julkaistu versio ja jokaisella on siihen lukuoikeudet.
Fantastic post kiitos! On taistellut tämän nyt viime päivinä.
Moikka, Tämä oli todella avulias asettaa. Olen aivan työskentely, ja myös toteutettu Mike Brown muuttua niin se ryhmittelee
tulokset sisältä esittää millä tahansa tavalla, valita Group By-parametri CQWB ominaisuudet.
Olen tehnyt otsikko linkki myös, niin se toimii hienosti. Minulla on vielä yksi ongelma, Vaikka. Tulokset olen ryhmittely sivustonimi. Taulukon sisällä, se ryhmittelee ne hienosti, ja se näyttää hyvältä, mutta se on silti tulostaa kaikki-ryhmän
nimet(minun tapauksessani sivustojen nimet) yllä olevassa taulukossa. Tietääkö kukaan miten päästä eroon näistä?
Kiitos,
Greg
Mukava artikkeli. Onnistuin antaa taulukko näyttää oletusarvoisen Sharepoint-luettelot analysoimalla luettelon lähdekoodi. Tässä on tärkein HTML-lohkoja tarvitaan sopivat ItemStyle:
<TAULUKON leveys = "100 %" Class = "ms-listviewtable" border = 0 CellSpacing-arvon = 0 cellpadding = 1, dir = "Ei mitään">
<!–OTSIKKO–>
<P class = "ms-viewheadertr" VALIGN = PÄÄLLÄ>
<TH ei tekstinrivitystä soveltamisala = "col" Class = "ms-vh2"><div style = "leveys:100%;Sijainti:suhteellinen;vasemmalle:0;alkuun:0;">
<Taulukkotyyli = "leveys:100%;" CtxNum = "1" korkeus = "100 %" CellSpacing-arvon = 1 cellpadding = 0 class = "ms-unselectedtitle">
<TR>
<TD leveys = "100 %" Class = "ms vb" ei tekstinrivitystä>
Texte du titteri ici
</TD>
<TD style = "asema:absoluuttinen;">
</TD>
</TR>
</TAULUKKO></div>
</TH>
<!–Toista kaikki otsikkosolujen–>
</TR>
<!– Taulukkotiedot –>
<P class = "">
<!–Tietosarakkeen, Paavalin koodia käytetään ensimmäinen hyperlinkki –>
<TD Class = "ms-vb2">Tiedot tässä</TD>
<!–Tyhjä sarake–>
<TD Class = "ms-vb2">
<span dir = ei mitään></span><
/TD>
<!–Päättymispäivä sarake–>
<TD Class = "ms-vb2">
<NOBR>11/12/2008</NOBR>
</TD>
</TR>
<!–***Vaihtoehtoisten rivien – Uuden XSL-muuttujan, joka lisää vaihtoehtoinen luokan perustuu nykyisen rivin modulo 2–>
<P class = "ms vuorotellen">
…
</TR>
</TAULUKKO>
Että juuri olin etsimässä...Oikeastaan...Eläköön...Rakastan sinua virkaan..
<XSL:Käytä malleja valita = "." Mode = "itemstyle">
<XSL:kanssa param nimi = "CurPos" Valitse = "$CurPosition" />
<XSL:kanssa param nimi = "viimeisenä" Valitse = "$LastRow" />
<XSL:kanssa param nimi = "StartNewGroup" Select="@__begingroup" />
</XSL:Milloin>
<XSL:Milloin testata = "$StartNewGroup ="True ">
<TR>
<TD >
<XSL:Call-template name="OuterTemplate.GetGroupName">
<XSL:kanssa param nimi = "ryhmän nimi" Select="@*[Nimi()= $Group]"/>
<XSL:kanssa param nimi = "GroupType" Valitse = "$GroupType" />
</XSL:Call-template>
</TD>
</TR>
</XSL:Milloin>
<XSL:muuten>
</XSL:muuten>
</XSL:Valitse>
HI-Paul,
Kun käsittelet xml/xsl- ja sisällön sisältökysely-web-osa, Olet löytänyt mitään hyvää tapoja teidän xslt-muodossa? Yrittää muuttaa ja testata suunnittelu on osoittautumassa oikea kipu ** vain teksti-editorilla…
Kaikkea hyvää
(virrankatkaisu. https://myweb.com/Marketing/images/icn-order.gif, )
Tulisi käyttää kuvan CommonViewFields kenttätyyppi? (virrankatkaisu. InternalColumnName, Kuva)
Viestisi on tarkalleen mitä etsin. Kuitenkin, En saa sitä toimimaan.
Olen eri doc tallennettujen asiakirjojen. kirjastojen mutta luokitella käyttämällä mukautetun luokan sarake (valinta: 1 tai 2. Haluan käyttää CQWP Näytä nämä asiakirjat perustuu niiden luokan.
Minulla oli mahdollisuus lisätä CQWP, vieminen SPD, Määritä itemStyle.xls mukautettu fileds Näytä luettelona. kuitenkin, Olen voinut ei onnistuneesti toteuta mitä kuvata täällä.
Nämä ovat haluan näyttää minun CQWP:
Tiedostotyyppi (Näytä kuvake)
Tiedoston otsikko
Viimeisin muokkauspäivä
Muokannut jotka
Kuitattu ulos
Sisäänkuittauksen kommentit
Minulla on tällä hetkellä tulosta luettelon muodossa. Miten voin vaihtaa sen talble muodossa.
Kiitos.
Kirsi
Pahoittelemme missspelling minun nimeäni ole varma missä ” tuli.