Category Archives: SharePoint-fejlesztési

Vigyázz a friss változások ItemStyle.xsl

Voltam működő-val ItemStyle.xsl-hoz megszokott a megjelenés-ból egy tartalomlekérdezési kijelző, és igaza van az ebéd ideje, Csináltam egy törés, váltson az xsl. Nem észre, hogy, de ez volt messzemenő hatása a webhelycsoportban. Elment ebédelni, és én vissza, Észrevettem egy csomó helyen megjelenő üzenet:

Nem jeleníthető meg a kijelző. A probléma elhárítása érdekében, Nyissa meg a kijelzőlapot egy Windows SharePoint Services-kompatibilis HTML-szerkesztővel, például a Microsoft Office SharePoint Designer-ben. Ha a probléma továbbra is fennáll, a kiszolgáló rendszergazdájától.

Az ügyfél hibáztattam (nem ráébredt még, hogy az én hibám, ezen a ponton) de végül észrevette, hogy a visual studio intellisense volt figyelmeztető nekem hogy hibás XSL. Azt korrigálni, és mindent kezdett el dolgozni.

Legyen átkozott óvatos, amikor a ItemStyle.xsl (és a globális XSL-fájlok) — törés őket érinti a webhelycsoport sok leletek.

<vége />

Tartalom lekérdezés Web Part eredmények jelenjenek meg a rács / Táblázat

Áttekintést és célja

Kívül a doboz, MOSS’ Tartalomlekérdezési kijelző (CQWP) lista formátumban jeleníti meg az eredményeket, hasonló a keresési eredmények. Az is lehetséges, hogy az eredmény megjelenjen a rács formátumú (i.e. HTML-táblázat formátumban). Rács formátumok jobbak, bizonyos körülmények között. Leírja, hogyan, hogy ebben a cikkben hatás eléréséhez.

Üzleti forgatókönyv

Én dolgoztam egy ügyfél, egy vállalati szintű MOSS kiépítése. A besorolás úgy terveztük, hogy projektek első osztályú polgár a hierarchiában, és a saját felső szintű webhely. A projektmenedzserek fenntartani a projekt összefoglaló információit singleton listáját, mint a cím, költségvetés, várható elkészülési dátum, fennmaradó költségvetés és más összesítő típusú mezők. A "szingli" Úgy értem, egyéni SharePoint lista tartalmaz egyetlen tétel garantált. Leegyszerűsítve, úgy néz ki mint ez:

kép

A technikai megközelítés, nagyjából ugyanaz, mint a leírt itt (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). A CQWP egy XSL-átalakító segítségével bocsátanak ki a HTML a böngésző tétele.

Mindig elképzelni az eredményt, mielőtt megmártózna az XSL, mert az XSL egy rémálom. Itt van a kívánt eredményt:

kép

HTML-mint ez generál eredményező:

<HTML>
 <szerv>
 <központ>
 <táblázat határ= 1>

<!-- Címkék-->
 <TR Háttérszín= kék>
 <TF><betűtípus szín= fehér><b>Projekt neve</b></betűtípus></TF>
 <TF igazításajobbra =><betűtípus szín= fehér><b>Teljes dátum</b></betűtípus></TF>
 <TF igazításajobbra =><betűtípus szín= fehér><b>Költségvetés</b></betűtípus></TF>
 <TF igazításajobbra =><betűtípus szín= fehér><b>Tényleges ráfordítás</b></betűtípus></TF>
 <TF><betűtípus szín= fehér><b>Általános állapot</b></betűtípus></TF>
 </TR>

<TR>
 <TF>Újra a számítógépes teremben vezeték.</TF>
 <TF igazításajobbra =>02/01/08</TF>
 <TF igazításajobbra =>22,500.00</TF>
 <TF igazításajobbra =>19,000.00</TF>
 <TF>A folyamatban lévő</TF>
 </TR>

<TR>
 <TF>Rendelkezésre a szerverek az SQL Upgrade</TF>
 <TF igazításajobbra =>04/01/08</TF>
 <TF igazításajobbra =>7,500.00</TF>
 <TF igazításajobbra =>0.00</TF>
 <TF>A tervezett</TF>
 </TR>

</táblázat>
 </központ>
 </szerv>
</HTML>

Megközelítés

Kövesse az alábbi lépéseket, hogy hozzon létre a rács:

  1. A rács összetevőinek azonosítása (sorok/oszlopok).
  2. Határozza meg, és szükséges webhelyoszlopok létrehozása:.
  3. A projektek és a listák singleton weboldalak létrehozása.
  4. A CQWP hozzá egy weblaphoz, és beállítani, hogy a listák keresése.
  5. A CQWP XML-összegyűjti a további oszlopok módosítása.
  6. Az XSL-táblázatok létrehozása, módosítása.

Vagyok lesz, hogy a hat. Számok keresztül négy egyenes továbbít, és valamit, ami bármely CQWP felhasználó már. Az ötödik már jól dokumentált, mások, beleértve a teljes képernyő-shot terhelt cikk MSDN itt (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) és Heather Solomon's blog itt (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).

Anyák és csavarok

Kezdődik, és hajtsa végre a lépéseket egy öt, az MSDN-dokumentációban és Heather Salamon cikk.

Ezen a ponton, a CQWP hozzáadott az oldalra és már a <CommonViewFields> szükség szerint konfigurálva.

A szokásos lépések, Kapok ilyen közbenső eredmények:

1. Tartalomtípus létrehozása, sablonokkal egyéni lista tartalomtípushoz tartozó és a két telek. Itt van a tartalomtípus:

kép

Itt van a webhelyszerkezet:

kép

2. Az CQWP hozzáadása után az én projekt alwebhelyek és egyedi projekt összefoglaló listák létrehozása:

kép

3. A kiegészítő információkat szeretné, keresztül a <CommonViewFields>:

        <ingatlan név="CommonViewFields" típus="karakterlánc">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</ingatlan>

Ne feledje, hogy meg kellett tartani minden tulajdonságmezőt egy sorban, vagy nem működik (CQWP azt mondja, hogy a lekérdezés eredménye nem elemek).

4. Ezen a ponton, készen állunk, hogy túllépjünk az MSDN-cikket és flip-a cikket Heather Salamon. Ő lépésekkel kezdő lépés közelében #5 hogy hozzon létre egy testreszabott / unghosted változat-ból ItemStyle.xsl. Én követ a Heather barátait tanácsadás, keresztül lép fel 11 és ezek a részeredmények:

4.1: Az XSL-sablont a következőképpen nevezze:

<XSL:sablon neve = "rács" mérkőzés = "sor[@Style = "Hálózat"]" Mode = "itemstyle">

Is kissé módosítani, ő azt javasolta <XSL:for each …> hozzáadásával egy <br /> cédula-hoz beszerez egy tisztább lista:

    <XSL:for each Válassza ki="@*">
      P:<XSL:érték-ból Válassza ki="név()" /><br/>
    </XSL:for each>

4.2: Módosítható a kijelző, megy megjelenését, és válassza a "Grid" stílus:

kép

Alkalmaz a cserél, és itt az eredmény:

kép

A fentiekből látjuk-e, hogy a mezőket szeretnénk (Projekt neve, költség, állapot, stb) elérhető számunkra, hogy használja, ha a kibocsátó a HTML. Nem csak, hogy, de azt látjuk, a nevét, amellyel mi hivatkoznia kell azokat az oszlopokat az XSL. Például, Mi referencia projektállapot-mint "Project_x005F_x0020_Name".

Ezen a ponton, Mi indulnak, Heather barátait blog, és ezek az óriások vállán, Én hozzá a saját kis.

ContentQueryMain.xsl

MEGJEGYZÉS:: Hogy mind a ContentQueryMain.xsl, valamint a ItemStyle.xsl, le kell ellenőrizni, mielőtt a változtatások hatásainak megtekintéséhez vissza ezeket a fájlokat.

Rács-gyártás céljából, MOSS használja két különböző XSL-fájlok eredményekkel, azt látjuk, a CQWP. Generálni a korábbi bit kimeneti, ItemStyle.xsl módosítása. MOSS valójában használ egy XSL-fájl, Generálni a HTML ItemStyle.xsl együtt a ContentQueryMain.xsl. Ahogy nevéből is, ContentQueryMain.xsl a "fő" XSL, amely szabályozza az általános fordítás. A talált elemek telepítéseket, és átadja nekik egy-egy sablonok a ItemStyle.xsl. Mi lesz módosít generálni a nyílt ItemStyle.xsl <táblázat> előtt a kibocsátó az első sor az adatok és a záró tag <táblázat> tag után az utolsó sor kibocsátó. Ehhez, ContentQueryMain.xsl módosul, hogy két paramétert adja át a "grid" ItemStyle.xsl-sablon, "utolsó sor" és az "aktuális sor". ItemStyle.xsl használja ezeket, hogy feltételesen bocsátanak ki a szükséges címkék.

Heather Salamon technikával, Mi keressük meg a ContentQueryMain.xsl. Nem található ugyanazon a helyen, mint ItemStyle.xsl. Segítenie kell a képernyő szemcsésedik:

kép

A következő módosításokat kell:

  • Módosíthat egy xsl-sablont, "A CallItemTemplate" hogy valóban elindítja a rács sablon ItemStyle.xsl. Mi át két paramétert a rács sablont, hogy ez lesz a nyitó és záró feltételesen létrehozásához szükséges adatok <táblázat> Címkék.
  • Egy kis ContentQueryMain.xsl, hogy felhívja a "CallItemTemplate módosítása" átadni egy "LastRow" a paraméter, hogy LastRow lehet hárítani a rács sablon.

Keresse meg a "OuterTemplate.CallItemTemplate nevezett sablon" a karakterlánc azonosítja:

  <XSL:sablon név="OuterTemplate.CallItemTemplate">

Cserélje ki az egész sablon az alábbiak szerint:

  <XSL:sablon név="OuterTemplate.CallItemTemplate">
    <XSL:param név="CurPosition" />

    <!--
      Add hozzá a "LastRow" a paraméter.
      Mi csak akkor használja, ha a cikk stílusa hágó-ban "Rács".
    -->
    <XSL:param név="LastRow" />

    <XSL:Válassza a>
      <XSL:mikor teszt="@Style = "NewsRollUpItem"">
        <XSL:apply-templates Válassza ki="." mód="itemstyle">
          <XSL:with-param név="EditMode" Válassza ki="$cbq_iseditmode" />
        </XSL:apply-templates>
      </XSL:mikor>
      <XSL:mikor teszt="@Style = "NewsBigItem"">
        <XSL:apply-templates Válassza ki="." mód="itemstyle">
          <XSL:with-param név="CurPos" Válassza ki="$CurPosition" />
        </XSL:apply-templates>
      </XSL:mikor>
      <XSL:mikor teszt="@Style = "NewsCategoryItem"">
        <XSL:apply-templates Válassza ki="." mód="itemstyle">
          <XSL:with-param név="CurPos" Válassza ki="$CurPosition" />
        </XSL:apply-templates>
      </XSL:mikor>

      <!--
              Jelenlegi helyzetét, és a lastrow át a rács itemstyle.xsl sablon.
              ItemStyle.xsl fog használni, hogy a nyílt bocsátanak ki és záró <táblázat> Címkék.
      -->
      <XSL:mikor teszt="@Style = "Hálózat"">
        <XSL:apply-templates Válassza ki="." mód="itemstyle">
          <XSL:with-param név="CurPos" Válassza ki="$CurPosition" />
          <XSL:with-param név="Utolsó" Válassza ki="$LastRow" />
        </XSL:apply-templates>
      </XSL:mikor>

      <XSL:egyébként>
        <XSL:apply-templates Válassza ki="." mód="itemstyle">
        </XSL:apply-templates>
      </XSL:egyébként>
    </XSL:Válassza a>
  </XSL:sablon>

A hozzászólások írja le a módosítások célja.

természetesen, a "OuterTemplate.CallItemTemplate" hívják magát egy másik sablon. Keresse meg a sablon ezen szöveges kereséssel:

<XSL:sablon név="OuterTemplate.Body">

Görgesse végig a OuterTemplate.Body utasításait, és helyezze be a LastRow paramétert a következő (ábrán egy magyarázat dőlt betűvel):

<XSL:call-template név="OuterTemplate.CallItemTemplate">
  <XSL:with-param név="CurPosition" Válassza ki="$CurPosition" />
  <!-- A LastRow paraméter beszúrása. -->
  <XSL:with-param név="LastRow" Válassza ki="$LastRow"/>
</XSL:call-template>

Elvégre, ez a, Mi végül a dolgokat létrehozni megfelelően úgy, hogy a ItemStyle.xsl is bocsát ki <táblázat> Címkék: a megfelelő helyre.

ItemStyle.Xsl

MEGJEGYZÉS:: Újra, Ellenőrizze a ItemStyle.xsl után, hogy bármit módosítana, úgy, hogy e változások hatása.

Itt van két tevékenység:

  • Cserélje ki a teljes rács sablon. Ön is másol/tészta alatt.
  • Adjunk hozzá néhány hókusz-pókusz kívül a sablondefiníció, amely lehetővé teszi a "formatcurrency" sablon dolgozni. (Meg tudod mondani, hogy van egy vékony fogantyú XSL).

Első, ItemStyle.xsl tetején, ezt a sort:

  <!-- Néhány hókusz-pókusz, amely lehetővé teszi számunkra, hogy megjelenítsük a U.S. pénznem. -->
  <XSL:tizedes formátum név="a személyzet" számjegy="D" />

  <XSL:sablon név="Alapértelmezett" meccs="*" mód="itemstyle">

Megjegyzés:, hogy nem hozzá közvetlenül az út előtt a <XSL:sablon neve = "alapértelmezett" …> meghatározás.

Következő, menj vissza a rács sablon. Az alábbi kódot cserélje ki a teljes rács sablon. Ez alaposan magyarázat, elektronikus levél én, vagy hagyja megjegyzéseket a blogomban, ha kérdése van, ne habozzon, de.

  <XSL:sablon név="Rács" meccs="Sor[@Style = "Hálózat"]" mód="itemstyle">

    <!--
      ContentMain.xsl halad a CurPos és az utolsó.
      Is használja ezeket, hogy feltételesen bocsátanak ki a nyílt és záró <táblázat> Címkék.
    -->
    <XSL:param név="CurPos" />
    <XSL:param név="Utolsó" />

    <!-- A következő változók változatlan, a szabványos ItemStyle.xsl -->
    <XSL:változó név="SafeImageUrl">
      <XSL:call-template név="OuterTemplate.GetSafeStaticUrl">
        <XSL:with-param név="UrlColumnName" Válassza ki=""ImageUrl""/>
      </XSL:call-template>
    </XSL:változó>
    <XSL:változó név="SafeLinkUrl">
      <XSL:call-template név="OuterTemplate.GetSafeLink">
        <XSL:with-param név="UrlColumnName" Válassza ki=""LinkUrl""/>
      </XSL:call-template>
    </XSL:változó>
    <XSL:változó név="DisplayTitle">
      <XSL:call-template név="OuterTemplate.GetTitle">
        <XSL:with-param név="Cím" Válassza ki="@Title"/>
        <XSL:with-param név="UrlColumnName" Válassza ki=""LinkUrl""/>
      </XSL:call-template>
    </XSL:változó>
    <XSL:változó név="LinkTarget">
      <XSL:Ha teszt="@OpenInNewWindow = "True"" >_blank</XSL:Ha>
    </XSL:változó>

    <!--
      Itt mi határozza meg egy változó, "tableStart".  Ez tartalmazza a HTML, hogy használunk határozza meg a táblázatban, valamint az oszlopfeliratok megnyitója.  Megjegyzés: Ha CurPos = 1, Ez magában foglalja a HTML egy CDATA-tag.
      Egyébként, üres lesz.

      A tableStart értéke emited minden alkalommal, amikor ItemStyle az úgynevezett ContentQueryMain.xsl keresztül.
    -->
    <XSL:változó név="tableStart">
      <XSL:Ha teszt="$CurPos = 1">
        <![CDATA[
        <Táblázatszegély = 1>
          <TR bgcolor = "blue">
            <TF><betűszín = "fehér"><b>Projekt neve</b></betűtípus></TF>
            <TD igazítása = "jobb"><betűszín = "fehér"><b>Teljes dátum</b></betűtípus></TF>
            <TD igazítása = "jobb"><betűszín = "fehér"><b>Költségvetés</b></betűtípus></TF>
            <TD igazítása = "jobb"><betűszín = "fehér"><b>Tényleges ráfordítás</b></betűtípus></TF>
            <TF><betűszín = "fehér"><b>Általános állapot</b></betűtípus></TF>
          </TR>
        ]]>
      </XSL:Ha>
    </XSL:változó>

    <!--
      Egy másik változó, tableEnd egyszerűen határozza meg, hogy a záró táblázat tag.

      Mint-val tableStart, -a ' mindig emited.  Éppen ezért az érték van rendelve feltételesen alapján, hogy mi már az utolsó sor által elfogadott ContentQueryMain.xsl.
    -->
    <XSL:változó név="tableEnd">
      <XSL:Ha teszt="$CurPos = $Last">
        <![CDATA[ </táblázat> ]]>
      </XSL:Ha>
    </XSL:változó>

    <!--
      Mindig bocsát ki a tartalmát tableStart.  Ha ez nem az első sort át hozzánk a ContentQueryMain.xsl, Aztán tudjuk, hogy az érték üres lesz.

      Tiltsa le a kimeneti elől, mert mikor tableStart ez nem üres, Ez magában foglalja a tényleges HTML, hogy szeretnénk tenni a böngésző.  Ha nem mondunk az XSL elemzőt hoz megbénít kimeneti elől, Ez akarat létrehoz a cucc, mint a"&lt;táblázat&gt;" Ahelyett, hogy"<táblázat>".
    -->
    <XSL:érték-ból Válassza ki="$tableStart" Megbénít kimeneti elől="igen"/>


    <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
      -->
      <TF>
        <XSL:érték-ból Válassza ki="@Project_x005F_x0020_Name"/>
      </TF>

      <TF igazítása="jobb">
        <XSL:érték-ból Válassza ki="@Project_x005F_x0020_End_x005F_x0020_Date"/>
      </TF>

      <TF igazítása="jobb">
        <XSL:call-template név="FormatCurrency">
          <XSL:with-param név="érték" 
Válassza ki="@Project_x005F_x0020_Budget"></XSL:with-param> </XSL:call-template> </TF> <TF igazítása="jobb"> <XSL:call-template név="FormatCurrency"> <XSL:with-param név="érték" Válassza ki="@Project_x005F_x0020_Expenses">
</XSL:with-param> </XSL:call-template> </TF> <TF> <XSL:érték-ból Válassza ki="@Project_x005F_x0020_Status"/> </TF> <!-- Az alábbi megjegyzésbe, tisztázni kell a dolgot. Azonban, hozza vissza és megtöm ez-ba egy <TF> a hatás megtekintéséhez. --> <!-- <div id = "linkitem" Class = "tétel"> <XSL:Ha teszt = "string-length($SafeImageUrl) != 0"> <div class = "kép-terület-bal"> <a href = "{$SafeLinkUrl}" Target = "{$LinkTarget}"> <IMG class = "kép rögzített-szélesség" src = "{$SafeImageUrl}"
ALT = "{@ImageUrlAltText}"/> </egy> </Div> </XSL:Ha> <div class = "hivatkozás-elem"> <XSL:call-template
Name="OuterTemplate.CallPresenceStatusIconTemplate"/> <a href = "{$SafeLinkUrl}"
Target = "{$LinkTarget}" title = "{@LinkToolTip}"> <XSL:értékét, jelölje be a "$DisXSLyTitle" = /> </egy> <div class = "Leírás"> <XSL:érték-ból select="@Description" /> </Div> </Div> </Div>
--> </TR> <!-- Bocsátanak ki a záró tag táblázat. Ha nem vagyunk az utolsó sor, Ez lesz az üres. --> <XSL:érték-ból Válassza ki="$tableEnd" Megbénít kimeneti elől="igen"/> </XSL:sablon> <XSL:sablon név="FormatCurrency"> <XSL:param név="érték" Válassza ki="0" /> <XSL:érték-ból Válassza ki='formátum-szám($érték, "$DDD,DDD,DDD.DD", "személyzet")' /> </XSL:sablon>

Standard WSS, MOSS adat belépés képernyők nem támogatják a kaszkádolt legördülő menük (vagy más intra-a kommunikáció)

FRISSÍTÉS (04/2008): Ez a nagy blog bejegyzést mutatja a jó javascript alapú megközelítése a probléma: http://webborg.blogspot.com/2008/04/add-functions-and-events-to-sharepoint.html

UPDATE II: (04/2008): Ez a blog bejegyzés úgy néz ki, ígéretes, valamint: http://www.cleverworkarounds.com/2008/03/13/free-mosswss-2007-web-part-hide-controls-via-javascript/

Hetente többször, Ha nem napi, fórum felhasználók leírni a követelmény, hogy általában sülnek keresztül kaszkádolt legördülő menük. Például, Van két csepp-legyőz vezérlőberendezés:

  • Oldalra dől-ból U.S. Államok
  • Oldalra dől-ból U.S. városok.

A felhasználói felület felelős, szolgáltatók, azt akarjuk, hogy működik, mint ez:

  • Paul kiválasztja a U.S. állam a legördülő menüből.
  • Ez okozza a városok legördülő szűrő csak azokat a városokat, hogy tartozik a kijelölt állapot.
  • Paul kiválasztja a város, a szűrt listáról.

Ez a szolgáltatás nincs out-of-the-box támogatás. valójában, nincs OOB támogat bármilyen közvetlen belüli-kommunikáció. Ez magában foglalja a programozott mezők elrejtése/engedélyezése vagy letiltása a mező változásai máshol az űrlapon.

Igazi célja ez a cikk, hogy leírja a lehetséges megoldásokat, és ezek közül a tudom őket:

  1. Fejlesztésére egyéni oszlopok. Egyéni-oszlop-fejlesztő, akkor teljes mértékben ellenőrzése alatt a "világ" Egyéni oszlop. Alkalmazhat egy zuhogó csepp-legyőz így.
  2. Fontolják meg a munkafolyamat. Bizonyos esetekben, szeretné automatikusan rendelje hozzá egy értéket a mező értékét egy másik mező alapján. Ebben az esetben, Ön általában megpróbálja használni a számított oszlop, de néhány alkalommal, csak nem kap a munka megtett. SharePoint Designer-munkafolyamat egy viszonylag felügyelete-barát alternatívát leengedjük a kód és a visual studio. Ha ezt az utat, legyen tisztában a probléma révén Ez a cikk (http://paulgalvin.spaces.live.com/blog/cns!CC1EDB3DAA9B8AA!405.entry).
  3. Eseménykezelők: Mint a munkafolyamat, Ez a megoldás egy után-a valójában. Az event handler egy .NET kódösszeállítás (C#, VB.NET) melyik SharePoint átadja a vezérlést. Az objektum Önnél van hozzáférése az adatokhoz, a lista (és a teljes objektum modell) és tudod csinálni akármi szükséges számítási.
  4. A SharePoint Designer segítségével létrehozhat egyéni nevezési. Nincs közvetlen tapasztalat ezzel a megközelítéssel, but I hear they are doing good things with NewForm.aspx these days 🙂
  5. Roll saját ASP.NET adat belépés függvény (önálló weblapként vagy kijelző) és azt használd helyette.

Ha valaki tudja a más vagy jobb lehetőségek, legyen szíves felad egy magyarázat és én majd frissíti a test ezen a poszton.

<vége />

Technorati Tags:

Hozzon létre a sávdiagramok SharePoint

– Áttekintés:

(FRISSÍTÉS 12/04/07: Végére egy másik érdekes forrás egy másik blogot, hogy foglalkozik ez keresztül egy nagyon érdekes kijelző csatolása)

Ez a blog bejegyzés ismerteti, hogyan lehet egy oszlopdiagram létrehozása a SharePoint rendszerben. Ez szerkezet-ban WSS és a moha, ez csak attól függ, az adatnézet kijelzőkön.

Átfogó megközelítését a következőképpen:

  1. Hozzon létre egy lista vagy dokumentumtár a diagramra felvenni kívánt adatokat tartalmazó.
  2. Hely a hozzájuk tartozó dokumentumtár / Egyéni lista alakzatot a rajzlapra, és megtérít ez-hoz egy adatnézet kijelzőkön (DVWP).
  3. Módosítsa a DVWP XSL-hoz létrehoz HTML, mint egy grafikon mutatja.

Üzleti forgatókönyv / A telepítő:

Nekem van teremtett egy szokás oldalra dől, a standard cím oszlopot és egy további oszlopot, "Állapot". E modellek (nagyon leegyszerűsítve) "engedély kiadás" forgatókönyv, ahol a cím a projekt és az állapot egy értéket képvisel a listából:

  • Javasolt
  • A folyamat
  • Leállt

Célja, hogy készítsen egy interaktív vízszintes oszlopdiagramon, amely azt mutatja, ezek az állapotkódok.

Én lakott a listát, és úgy néz ki, mint ez:

kép

Hozzon létre az adatnézet kijelzőkön:

Hozzon létre a DVWP az egyéni lista hozzáadása egy oldal (az én esetemben oldalra) kövesse az utasításokat, és itt (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!395.entry).

Mellett egyszerűen létre a DVWP, is be kell állítani a lapozófájl tulajdonság minden rendelkezésre álló sorok megjelenítéséhez. Nekem, Ez valahogy így néz ki:

kép

Ezen a ponton, Mindig zárja be az SPD és a böngésző. Majd újra megnyitja a böngésző segítségével az oldalon. Ezzel elkerülhető, hogy véletlenül mucking fel a web rész elrendezése az oldalon.

Az XSLT módosítása:

Itt az ideje, hogy módosítsa az XSLT.

Én mindig használ Látási Műterem részére ez. (Lásd: itt egy fontos megjegyzés az intellisense, amit akarat segít ön alot).

Én egy üres projekt létrehozása négy új fájlok hozzáadása (a szó "eredeti cseréje" és az "új" szükség szerint):

  • Original.XSLT
  • New.XSLT
  • Eredeti Params.xml
  • Új Params.xml

Az én esetemben, úgy néz ki mint ez:

kép

Módosíthatja a kijelző, és másolja a "params" és az "eredeti XSL" a Visual Studio verzió.

Itt célja, hogy átalakítani az eredményeket kapunk vissza DVWP a lekérdezésből HTML, hogy egy gráf XSL okoz.

Ebből a célból, Ez segít, hogy először fontolja meg, amit a HTML kell kinéznie előtt mi kap megzavarodott az az őrület, hogy az úgynevezett "XSL". (Világos, a következő egyszerűen egy példa; ne írja be vagy másolja be a visual studio. Én beszerez egy kiindulási pont, hogy később, a túlzó feldicsérés teljes ütés). Az alábbi minta grafikon jelenik meg, mint a HTML követően azonnal:

Minta oszlopdiagram

Megfelelő HTML:

<HTML>
<szerv>
<központ>
<asztal szélesség = 80 %>
<TR><TF><központ>Vízszintes sáv grafikon</TF></TR>
<TR>
<TD igazítása = "center">
<Táblázatszegély = "1" szélesség = 80 %>
<TR>
<TD szélessége 10 % =>Nyitott</TF>
<TF><táblázat cellpadding ="0" a CellSpacing ="0" border = 0 width = 50 %><TR bgcolor = piros><TF>&nbsp;</TF></TR></táblázat></TF>
</TR>
<TR>
<TD szélessége 10 % =>Zárt</TF>
<TF><táblázat cellpadding ="0" a CellSpacing ="0" border = 0 width = 25 %><TR bgcolor = piros><TF>&nbsp;</TF></TR></táblázat></TF>
</TR>
<TR>
<TD szélessége 10 % =>Leállt</TF>
<TF><táblázat cellpadding ="0" a CellSpacing ="0" border = 0 width = 25 %><TR bgcolor = piros><TF>&nbsp;</TF></TR></táblázat></TF>
</TR>
</táblázat>
</TF>
</TR>
</táblázat>
</szerv>
</HTML>

Én használt egy halott egyszerű megközelítés kialakítása a bárok, egymás után a "piros" háttérszínének beállításával.

Az elvitelre itt ez: A végén, minden teszünk hoz létre HTML sorokat és oszlopokat tartalmazó.

Sablon XSLT:

Én másolta az XSLT, amit létrehoz egy vízszintes oszlopdiagramon. Meglehetősen jól nyilatkozott így nem adhatok sokkal itt kivételével ezek a megjegyzések:

  • Elkezdtem az alapértelmezett XSL, SharePoint Designer adta velem, a DVWP első létrehozásakor.
  • Voltam képes-hoz levág ez SPD 657 sorok 166 vonalak.
  • Nem rendetlenség a paraméter XML fájl (amely elkülönül az XSL, és tudni fogod, mit jelent, ha megy, hogy módosítsa a DVWP, maga; vannak kettő fájlokat módosíthatja). Azonban, annak érdekében, hogy egyszerűsítse, Volt szinte az összes eltávolítása az XSL. Ez azt jelenti, hogy ha azt szeretné, hogy ezek a paraméterek használata, Ön csak kell hozzáadni a változó fogalommeghatározások vissza az XSL. Könnyű lesz, mivel az eredeti XSL változó fogalommeghatározások Önnek a visual studio programban.
  • Kellene, hogy legyen képes-hoz másol és tészta ez közvetlenül a visual studio projekt. Majd, távolítsa el az én hívások, és helyezze be saját kéri, hogy "ShowBar".
  • A leásás szerkezet mellett teremtő egy <a href> tetszik: http://server/List?FilterField1=fieldname&FilterValue1=actualFilterValue. Ezt a technikát lehet más kontextusban. Az első, Azt hittem, hogy én kell, hogy megfelelnek a bonyolultabb formátum: http://server/List/AllItems.aspx?View={guid}&FilterField1=blah&FilterValue1=blah, de a környezetemben nem szükséges. A lista URL-Címének átadott minket a SharePoint így ez elég könnyű, hogy általánosítani.

Itt van:

<XSL:stíluslap változat="1.0" kizár-eredmény-előtagok="RS z o s ddwrt dt msxsl" 
xmlns:msxsl="urna:schemas-microsoft-com:XSLT" xmlns:XSL="http://1999/XSL/átalakító www.w3.org/"
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="urna:schemas-microsoft-com:Office" xmlns:s="UUID:BDC6E3F0-6DA3-11D1-A2A3-00AA00C14882"
xmlns:DT="UUID:C2F41010-65B3 - 11d 1-A29F-00AA00C14882" xmlns:RS="urna:schemas-microsoft-com:a sorhalmaz" xmlns:z="#RowsetSchema"
xmlns:ddwrt2="urna:a FrontPage:belső"
> <XSL:kimeneti a módszer="HTML" francia="nem" /> <XSL:tizedes formátum NaN="" /> <XSL:param név="ListUrlDir"></XSL:param> <!-- Szükségem van ez-egy leásási támogatásához. --> <XSL:sablon meccs="/" xmlns:SharePoint="Microsoft.SharePoint.WebControls"
xmlns:__designer=http://schemas.microsoft.com/WebParts/v2/DataView/designer xmlns:ASP="http://schemas.microsoft.com/ASPNET/20"
> <XSL:változó név="dvt_StyleName">Táblázat</XSL:változó> <XSL:változó név="Sorok" Válassza ki="/Sorok/dsQueryResponse/sor" /> <XSL:változó név="dvt_RowCount" Válassza ki="gróf($Sorok)" /> <XSL:változó név="IsEmpty" Válassza ki="$dvt_RowCount = 0" /> <XSL:változó név="dvt_IsEmpty" Válassza ki="$dvt_RowCount = 0" /> <XSL:Válassza a> <XSL:mikor teszt="$dvt_IsEmpty"> Nincs olyan adat, grafikon!<br/> </XSL:mikor> <XSL:egyébként> <!-- Az érdekes dolgok itt kezdődik. Szükségünk van egy pár, az egyes sorokban változójának meghatározása a grafikonon: elemek és százaléka a teljes száma. --> <XSL:változó név="totalProposed" Válassza ki="gróf(/Sorok/dsQueryResponse/sor[tér-normalizálása(@Status) = A "Javasolt"])" /> <XSL:változó név="percentProposed" Válassza ki="$totalProposed div $dvt_RowCount" /> <XSL:változó név="totalInProcess" Válassza ki="gróf(/Sorok/dsQueryResponse/sor[tér-normalizálása(@Status) = "Folyamatban"])" /> <XSL:változó név="percentInProcess" Válassza ki="$totalInProcess div $dvt_RowCount" /> <XSL:változó név="totalStalled" Válassza ki="gróf(/Sorok/dsQueryResponse/sor[tér-normalizálása(@Status) = "Leállt"])" /> <XSL:változó név="percentStalled" Válassza ki="$totalStalled div $dvt_RowCount" /> <!-- Mi határozza meg a HTML-táblázat itt. Vagyok hitelfelvétel, néhány szabványos SharePoint stílusokat itt, hogy következetes. Azt hiszem, ez akkor is figyelembe veszi a globális css fájl módosításai, valamint a téma felülbírálja. --> <táblázat szélessége="100%" a CellSpacing="0" CellPadding="2" stílus="Border-jobbra: 1 szilárd #C0C0C0; Border-bottom: 1 szilárd #C0C0C0; határ-left-style: szilárd; Border-left-width: 1; határ menti top-stílusú: szilárd; határ menti top-szélességű: 1;"> <TR> <TF igazítása="központ"> <táblázat határ="1" szélessége="100%"> <!-- Az egyes állapotok, amit szeretnénk, a graph, a "ShowBar hívjuk." sablon. Mi adja át: 1. A sorok feliratát. Ez alakul át a hiperhivatkozás. 2. A százalékos (a fenti változó). 3. A mező tényleges nevével, a kód a mögöttes lista. Ez nem feltétlenül egyezik meg a megjelenítési címkéjével. 4. Mezőérték kiegyenlített #3. 5. Ezt az állapotkódot a teljes cikkek (nem a végösszeg minden állapotkódok). Bocsát ki egy <TR></TR> és a vízszintes sáv grafikon. Hívjuk ezt a sablont minden állapotkód, azt akarjuk, hogy Nézd. --> <XSL:call-template név="ShowBar"> <XSL:with-param név="BarDisplayLabel" Válassza ki=""Javasolt""/> <XSL:with-param név="BarPercent" Válassza ki="$percentProposed"/> <XSL:with-param név="QueryFilterFieldName" Válassza ki=""Állapot""/> <XSL:with-param név="QueryFilterFieldValue" Válassza ki=""Javasolt""/> <XSL:with-param név="TotalItems" Válassza ki="$totalProposed"></XSL:with-param> </XSL:call-template> <XSL:call-template név="ShowBar"> <XSL:with-param név="BarDisplayLabel" Válassza ki=""Leállt""/> <XSL:with-param név="BarPercent" Válassza ki="$percentStalled"/> <XSL:with-param név="QueryFilterFieldName" Válassza ki=""Állapot""/> <XSL:with-param név="QueryFilterFieldValue" Válassza ki=""Leállt""/> <XSL:with-param név="TotalItems" Válassza ki="$totalStalled"></XSL:with-param> </XSL:call-template> <XSL:call-template név="ShowBar"> <XSL:with-param név="BarDisplayLabel" Válassza ki=""Folyamatban""/> <XSL:with-param név="BarPercent" Válassza ki="$percentInProcess"/> <XSL:with-param név="QueryFilterFieldName" Válassza ki=""Állapot""/> <XSL:with-param név="QueryFilterFieldValue" Válassza ki=""Folyamatban""/> <XSL:with-param név="TotalItems" Válassza ki="$totalInProcess"></XSL:with-param> </XSL:call-template> </táblázat> </TF> </TR> </táblázat> </XSL:egyébként> </XSL:Válassza a> </XSL:sablon> <!-- Ez a sablon nem a munka az egyéni sorok megjelenítését az oszlopdiagram. Akkor valószínűleg nem a csípés itt a legtöbb. --> <XSL:sablon név="ShowBar"> <XSL:param név="BarDisplayLabel" /> <!-- Címke megjelenítése --> <XSL:param név="BarPercent"/> <!-- Teljes százaléka. --> <XSL:param név="QueryFilterFieldName"/> <!-- Ugrani, a lekérdezéshez használt & szűrő --> <XSL:param név="QueryFilterFieldValue"/> <!-- Ugrani, a lekérdezéshez használt & szűrő --> <XSL:param név="TotalItems" /> <!-- a barlabel száma --> <TR> <!-- A bár címkét önmagában. --> <TF osztály="MS-formbody" szélessége="30%"> <!-- Ezt a következő meg a kimutatások épít egy lekérdezési karakterláncot, amely lehetővé teszi számunkra, hogy fúr legyőz-hoz egy szűrt nézet alapjául szolgáló adatok. Mi csinál használ-ból egy pár dolgot itt: 1. Tudjuk átadni FilterField1 és a FilterValue1 listájának szűréséhez, oszlop. 2. SharePoint halad a kulcsparamétert nekünk, ListUrlDir, amely rámutat arra, hogy a mögöttes lista, amely ellen a DVWP "fut". Nem XSL-vicces? --> <XSL:szöveg Megbénít kimeneti elől="igen"> <![CDATA[<a href ="]]></XSL:szöveg> <XSL:érték-ból Válassza ki="$ListUrlDir"/> <XSL:szöveg Megbénít kimeneti elől="igen"><![CDATA[?FilterField1 =]]></XSL:szöveg> <XSL:érték-ból Válassza ki="$QueryFilterFieldName"/> <XSL:szöveg Megbénít kimeneti elől="igen"><![CDATA[&FilterValue1 =]]></XSL:szöveg> <XSL:érték-ból Válassza ki="$QueryFilterFieldValue"/> <XSL:szöveg Megbénít kimeneti elől="igen"><![CDATA[">]]></XSL:szöveg> <XSL:érték-ból Válassza ki="$BarDisplayLabel"/> <XSL:szöveg Megbénít kimeneti elől="igen"><![CDATA[</egy>]]></XSL:szöveg> <!-- A következő darab mutatja néhány számot a formátum: "(összesen / % a teljes)" --> (<XSL:érték-ból Válassza ki="$TotalItems"/> / <!-- Ez létrehoz egy szép százalékos címke számunkra. kösz, A Microsoft! --> <XSL:call-template név="percentformat"> <XSL:with-param név="százalék" Válassza ki="$BarPercent"/> </XSL:call-template>) </TF> <!-- Végül, bocsátanak ki egy <TF> a sáv tag maga.--> <TF> <táblázat CellPadding="0" a CellSpacing="0" határ="0" szélessége="{kerek($BarPercent * 100)+1}%"> <TR Háttérszín="piros"> <XSL:szöveg Megbénít kimeneti elől="igen"><![CDATA[&nbsp;]]></XSL:szöveg> </TR> </táblázat> </TF> </TR> </XSL:sablon> <!-- Ez valóban közvetlenül néhány XSL, találtam egy MS-sablon. --> <XSL:sablon név="percentformat"> <XSL:param név="százalék"/> <XSL:Válassza a> <XSL:mikor teszt="formátum-szám($százalék, '#,##0%;-#,##0%')= "NaN"">0%</XSL:mikor> <XSL:egyébként> <XSL:érték-ból Válassza ki="formátum-szám($százalék, '#,##0%;-#,##0%')" /> </XSL:egyébként> </XSL:Válassza a> </XSL:sablon> </XSL:stíluslap>

Az eredmények:

Az XSL-ból fenti generál ez a grafikon:

kép

Leásás az alapul szolgáló adatok mellett csattanó a státusz-kód:

kép

Záró gondolatok:

Ez általánosítható?

Imádom ezt a fogalmat grafikonrajzoló, de utálom az a tény, hogy van, hogy megy, és nem annyira kézi kódolást. Adtam egy kis gondolat, hogy vajon általánosítható, és én optimista vagyok, de én is egy kicsit félelmetes, hogy lehet, hogy egy téglafal, valahol az úton, amit nem felajánl akármi dolgozik-körül. Ha akárki birtokol némely jó eszme, ez a, Kérjük, hogy egy Megjegyzés a hozzászólások, vagy elektronikus levél én.

Függőleges grafikonok:

Ez a vízszintes sáv. Minden bizonnyal lehetséges, hogy hozzon létre egy függőleges grafikon. Mi csak meg kell változtatni a HTML. I 'd start ugyanúgy: Hozzon létre egy HTML ábrázolása egy függőleges sáv grafikon, és majd kitaláljuk, hogyan kap, hogy keresztül XSL. Ha valaki érdekel, hogy, Én is rávették, hogy próbálja ki, és dolgozzanak ki a csomó. Ha valaki már megtette, hogy, kérem tudassa velem, és én szívesen hivatkoznak, hogy a blog 🙂

Azt hiszem, hogy egy függőleges grafikon kihívás az, hogy a címkék a diagram nehezebben kezelhető, Természetesen nem lehetetlen, de.

A mező neve megvagy:

Legalább két dolgot kell figyelnie kell a mezőneveket.

Első, a mező nevét egy hely van, hogy megmenekült az XSL. Ez valószínűleg egy probléma itt:

        <XSL:változó név="totalProposed" 
Válassza ki="gróf(/Sorok/dsQueryResponse/sor[tér-normalizálása(@Status) = A "Javasolt"])" />

Ha a "státusz" oszlop van valójában nevezett állapot kódja"" akkor kell hivatkozni, mint "Status_x0020_Code":

   <XSL:változó név="totalProposed" 
Válassza ki="gróf(/Sorok/dsQueryResponse/sor[tér-normalizálása(@Status_x0020_Code) = A "Javasolt"])" />

Második, és én vagyok egy kicsit zavaros ez, de akkor is kell a figyelmeztető jelzést, a mező nevének módosítása. Ha nevet a mező "állapot kódja" majd később, a, átnevez ez-hoz "AFE állapot", a "belső név" nem változtatja meg. A belső név továbbra is "állapot kódja" és kell hivatkozni, mint "Status_x0020_Code". Az "egyéb források" linkek segíthetnek diagnosztizálni és kijavítani ezt a fajta probléma.

Arról, hogy a szín:

Én felvette a "piros" mert ez kellemes számomra abban a pillanatban. Nem lenne nagy dolog megmutatni annak érdekében, hogy több, mint egy vizuális leírása több színben, de hogy hasznos fő Teljesítménymutató. Például, Ha a százalékos "leállt" AFE barátait > 10% akkor mutasd meg a piros, egyébként Térkép fekete. Használata <XSL:Válassza a> Ehhez.

Más források:

Boldog átalakítása!

<vége />

Subscribe to my blog!

Jelen OM adat keresztül egyéni lista (vagy, Még egy másik OM adatok Displayor [mint a YACC, de más])

Ma, Töltöttem egy maroknyi órát nyomkövető le a gyökér oka mögött a üzenet "a megadott oszlop neve már használatban van vagy fenntartott. Válasszon egy másik nevet."

Az adott oszlop sikerült létrehozni, törlésének és újra létrehozásának egy másik környezetben, így tudtam, hogy nem volt a fenntartott nevet. Azonban, Egyszerűen nem találtam sehol az oszlop keresztül a szabványos SharePoint felhasználói felület bármely helyen a webhelycsoport.

Én kifüggesztett MSDN fórumok itt és a fékezhetetlen Andrew Woodward mutatott nekem irányába az objektum modell alapjául szolgáló adatok.

Elment, hogy Codeplex találni néhány eszközt, hogy segítsen az OM alapadat szakértői, és segítsen nekem megtalálni a baj.

Próbáltam több eszközt, és voltak nagyon jó és érdekes, de a végén, a felhasználói felület nem volt elég jó, a célom. Nem vagyok kritizálta őket bármilyen módon, de egyértelműen az eszköz döntéshozók nem volt problémám szem előtt tartva a felhasználói felület létrehozásakor :). A legtöbb ember úgy tűnik, hogy lehet befektetni egy tisztességes mennyiségű időt és erőfeszítést létrehozásának munkaállomás / kliens alkalmazások, amelyek a fa views, jobb-kettyenés szövegkörnyezet étlap és így tovább. Ezek a szép és minden, de egy csomó munka, hogy hozzon létre egy top-of-the-line felhasználói élmény, ez is nagyon rugalmas.

Én igazán szükséges választ erre a problémára. Eszembe jutott, hogy ha én tudna kap minden a webhelyoszlopok a webhelycsoport egyéni listába, Én tudna szűrő, rendezheti és nézetek, hogy segítsen megtalálni az állítólag létező oszlop létrehozása (hogy, BTW). Mentem előre, és tettem, és egy-két órát, később, volt a webhelyoszlopok töltődik be egy egyéni listát, és a csoportosítás, válogatás és így tovább. Én alapít a válaszom öt perccel később.

Ha sikeresen átveszi a világ, Azt hiszem, lesz rendelet, hogy minden SharePoint eszközök szolgáltatók kell komolyan fontolóra felszínre objektum modell adataikat az egyéni lista. Így, Nekem van a hatalom Keresés bármely módon szeretnék (a korlátozott, természetesen, a szabványos sharepoint-szolgáltatások).