Kategorija Arhīvs: SharePoint Development

Sargieties, laužot izmaiņas ItemStyle.xsl

Es strādāju ar ItemStyle.xsl, lai pielāgotu izskatu satura vaicājuma Web daļu un labi ap pusdienas laiku, Man lika sadalīšana, mainīt uz xsl. I didn't realizēt, bet tas bija tālejošas sekas visā vietņu kolekcijā. Es devos uz pusdienām un pēc manas atgriešanās, ievērojuši ķekars vietām parādās ziņojums:

Šo Web daļu nevar parādīt. Lai novērstu šo problēmu, atveriet šo Web lapu ar Windows SharePoint Services saderīgā HTML redaktorā, piemēram, Microsoft Office SharePoint Designer. Ja problēma netiek novērsta, sazinieties ar Web servera administratoru.

Es vainoja klients (nesaprazdams vēl, ka šajā brīdī tā bija mana vaina) bet galu galā pamanīju, ka vizuālā studija intellisense bija mani brīdināja, ka man bija nepareizi veidots XSL. Man tas jālabo un viss sāka strādāt.

Būt darned piesardzīgs, strādājot ar ItemStyle.xsl (un visas pasaules XSL failu) — pārkāpj tās ietekmē daudzi artifacts vietņu kolekcijā.

<beigām />

Technorati Tags: Technorati Tags: , ,

Satura vaicājuma Web daļa rezultātu rādīšana režģis / Tabula

Pārskats un mērķi

No kastes, SŪNA’ Satura vaicājuma Web daļu (CQWP) tās rezultāti parāda saraksta formātā, līdzīgi kā meklēšanas rezultāti. Tas ir arī iespējamos rezultātus attēlot režģa formātā (ti. HTML tabulas formātā). Režģa formāti ir labāk dažos apstākļos. Kā sasniegt šajā sakarā, šajā rakstā es aprakstīt.

Biznesa scenāriju

Ir strādājuši ar klientu par uzņēmuma MOSS izvēršana. Mēs esam izstrādājuši savu taksonomiju, tāda, ka projektu hierarhijā pirmās klases pilsoņi un ir savas augstākā līmeņa vietnes. Projektu vadītāji uztur vienīgo sarakstu projekta kopsavilkuma informācija, piemēram, virsrakstu, Budžets, paredzamo izpildes datumu, Atlikušie budžeta un citas kopsavilkuma tipa laukiem. Ar "Vienīgajos" Es domāju, pielāgots SharePoint saraksts garantē satur tikai vienu vienumu. Vienkāršoti, tas izskatās šādi:

attēlu

Tehniskā pieeja ir daudz tādas pašas, kā aprakstīts šeit (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). CQWP XSL transformāciju izmanto, lai ģenerētu HTML pārlūku, lai atveidotu.

Es vienmēr iztēloties rezultāts pirms iegremdēšanās XSL, jo XSL ir murgs. Te ir mans vēlamais rezultāts:

attēlu

HTML, piemēram, tas rada, kā rezultātā:

<HTML>
 <organizācija>
 <centrs>
 <tabula apmale= 1>

<!-- Uzlīmes->
 <TR BGColor= blue>
 <TD><fontu krāsu= white><b>Projekta nosaukums</b></fontu></TD>
 <TD Līdzināt= pa labi><fontu krāsu= white><b>Pabeigtu datumu</b></fontu></TD>
 <TD Līdzināt= pa labi><fontu krāsu= white><b>Budžets</b></fontu></TD>
 <TD Līdzināt= pa labi><fontu krāsu= white><b>Faktisko izdevumu</b></fontu></TD>
 <TD><fontu krāsu= white><b>Vispārējo statusu</b></fontu></TD>
 </TR>

<TR>
 <TD>Vadu datorklase.</TD>
 <TD Līdzināt= pa labi>02/01/08</TD>
 <TD Līdzināt= pa labi>22,500.00</TD>
 <TD Līdzināt= pa labi>19,000.00</TD>
 <TD>Notiek</TD>
 </TR>

<TR>
 <TD>Noteikums serverus SQL Upgrade</TD>
 <TD Līdzināt= pa labi>04/01/08</TD>
 <TD Līdzināt= pa labi>7,500.00</TD>
 <TD Līdzināt= pa labi>0.00</TD>
 <TD>Plānots</TD>
 </TR>

</tabula>
 </centrs>
 </organizācija>
</HTML>

Pieeja

Izpildiet šos norādījumus, lai izveidotu režģi:

  1. Noteikt tīkla sastāvdaļas (rindas/kolonnas).
  2. Noteikt un izveidot nepieciešamo vietnes kolonnām.
  3. Izveidot vietnes apakš projektiem un Vienīgajos saraksti.
  4. Lai web lapai pievienotu CQWP un konfigurēt tā, lai meklētu savus sarakstus.
  5. Modificēt XML CQWP savākt papildu kolonnas.
  6. Modificēt, lai XSL ģenerētu tabula.

Es esmu gatavojas koncentrēties uz numuru seši. Skaitļi pa četriem ir taisni uz priekšu un kaut ko, kas jau ir izdarījis jebkurš lietotājs, CQWP. Numuru pieci ir labi dokumentēta, citi, ieskaitot šo izsmeļošs ekrāna nošauti kravu raksts no MSDN šeit (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) un Heather Solomona blog šeit (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).

Uzgriežņus un bultskrūves

Uzsākt un īstenot soļus viens līdz pieci saskaņā ar MSDN dokumentācijai un Heather Solomona pants.

Šajā brīdī, esat pievienojis savu CQWP lapas un jums ir jūsu <CommonViewFields> konfigurēts pēc nepieciešamības.

Šādas parastās darbības, Es varu saņemt šo starpposma rezultāti:

1. Izveidot satura tipu, templatized pielāgota saraksta satura tipam un divas vietas. Šeit ir satura tips:

attēlu

Šeit ir vietnes struktūra:

attēlu

2. Pievienot CQWP pēc tam, kad manu projektu apakšvietnes un Vienīgajos projekta kopsavilkuma sarakstu izveidošanu:

attēlu

3. Pievienot visu papildu informāciju, ko vēlaties, izmantojot <CommonViewFields>:

        <īpašuma vārds="CommonViewFields" tips="virkne">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</īpašuma>

Ņemiet vērā, ka man vajadzēja parūpēties par rekvizītu laukiem vienā rindā vai nedarbosies (CQWP taču man pateiktu, ka vaicājums neatgrieza nekādus vienumus).

4. Šajā brīdī, mēs esam gatavi iet tālāk MSDN raksts un uzsist pa Heather Solomona pants. Sekot viņas darbības sākuma solis tuvāk #5 lai izveidotu pielāgotu / unghosted versija ItemStyle.xsl. I sekot Hetere ir konsultācijas, līdz ar soli 11 un saņemt šos starpposma rezultāti:

4.1: Šādi nosaukt savu XSL veidnes:

<XSL:veidnes nosaukums = "Grid" atbilstu = "rindu[@Style = "Grid"]" Mode = "itemstyle">

Es arī nedaudz mainīt viņu ieteica <XSL:par katru …> pievienojot <br /> tagam, lai nodrošinātu tīrāku listing:

    <XSL:par katru atlasiet="@*">
      P:<XSL:vērtību no atlasiet="vārds()" /><br/>
    </XSL:par katru>

4.2: Modificēt web daļu, dodieties uz izskatu un izvēlēties manu "Grid" stils:

attēlu

Izmaiņas tiek ieviestas, un šeit ir rezultāts:

attēlu

Mēs varam redzēt no iepriekš mēs gribam laukus (Projekta nosaukums, izdevumi, statuss, uc) ir pieejamas mums izmantot, kad mēs izstarot HTML. Ne tikai to, ka, bet mēs redzam vārdus, kas ir atsauces slejās XSL. Piemēram, mēs projekta statuss atsaucē kā "Project_x005F_x0020_Name".

Šajā brīdī, mums atkāpties no Hetere ir blog un no šīm milžu pleciem, Es varu pievienot savu mazumiņu.

ContentQueryMain.xsl

PIEZĪME: Veicot izmaiņas gan ContentQueryMain.xsl, kā arī ItemStyle.xsl, jums nepieciešams pārbaudīt šos failus atpakaļ pirms jūs redzat jūsu izmaiņu efektu.

Grid veidošanas nolūkos, SŪNA izmanto divas dažādas XSL failos esošo rezultātu mēs redzam no CQWP. Lai ģenerētu izvades iepriekšējo bits, mēs mainīt ItemStyle.xsl. MOSS, faktiski izmanto citu XSL failu, ContentQueryMain.xsl, lai kopā ar ItemStyle.xsl, lai radītu savu HTML. Kā norāda tās nosaukums, ContentQueryMain.xsl ir galvenais"" XSL, kas kontrolē kopējo plūsmu tulkošanas. Tas atkārtojas pa visu atrasto vienumu un nodod tos pa vienam, lai veidnes ItemStyle.xsl. Mēs ņemšu mainīt ItemStyle.xsl radīt atvērtu <tabula> pirms izstaro pirmās rindas datus un beigu tagu <tabula> tagu pēc emisijas pēdējās rindas. Lai to paveiktu, ContentQueryMain.xsl modificēta divi parametri nodot mūsu "režģis" veidnes ItemStyle.xsl, "pēdējā rindā" un "pašreizējā rinda". ItemStyle.xsl izmanto tie nosacīti izdala vajadzīgos tagus.

Izmantojot Heather Solomona tehnika, mēs atrast ContentQueryMain.xsl. Tā atrodas tajā pašā vietā kā ItemStyle.xsl. Vajadzētu palīdzēt šajā ekrānuzņēmums:

attēlu

Mums ir nepieciešams veikt šādas izmaiņas:

  • Xsl veidnes modificēšana, "CallItemTemplate" faktiski, kas izsauc mūsu Grid veidnes ItemStyle.xsl. Pāriesim divi parametri Grid veidni tā, ka tas būs dati tai ir nosacīti ģenerēt atvēršana un aizvēršana <tabula> Tags.
  • Modificēt citā bitu ContentQueryMain.xsl, kas aicina "CallItemTemplate" to varētu nodot "LastRow" parametrs tāpēc, ka LastRow var nodot mūsu Grid veidni.

Atrastu veidni ar nosaukumu "OuterTemplate.CallItemTemplate" ar virkni identificēta:

  <XSL:Veidne: vārds="OuterTemplate.CallItemTemplate">

Šādi aizvietot visu veidni:

  <XSL:Veidne: vārds="OuterTemplate.CallItemTemplate">
    <XSL:param vārds="CurPosition" />

    <!--
      Pievienot "LastRow" parametrs.
      Mēs tikai izmantot to elementu stilu caurlaide, esot "Grid".
    -->
    <XSL:param vārds="LastRow" />

    <XSL:izvēlieties>
      <XSL:kad tests="@Style = 'NewsRollUpItem'">
        <XSL:lietot veidnes atlasiet="." režīms="itemstyle">
          <XSL:ar param vārds="EditMode" atlasiet="$cbq_iseditmode" />
        </XSL:lietot veidnes>
      </XSL:kad>
      <XSL:kad tests="@Style = 'NewsBigItem'">
        <XSL:lietot veidnes atlasiet="." režīms="itemstyle">
          <XSL:ar param vārds="CurPos" atlasiet="$CurPosition" />
        </XSL:lietot veidnes>
      </XSL:kad>
      <XSL:kad tests="@Style = 'NewsCategoryItem'">
        <XSL:lietot veidnes atlasiet="." režīms="itemstyle">
          <XSL:ar param vārds="CurPos" atlasiet="$CurPosition" />
        </XSL:lietot veidnes>
      </XSL:kad>

      <!--
              Pašreizējo stāvokli un lastrow nodot Grid itemstyle.xsl veidni.
              ItemStyle.xsl, kas izmantos emitēt atklātā un aizvēršana <tabula> Tags.
      -->
      <XSL:kad tests="@Style = "Grid"">
        <XSL:lietot veidnes atlasiet="." režīms="itemstyle">
          <XSL:ar param vārds="CurPos" atlasiet="$CurPosition" />
          <XSL:ar param vārds="Pēdējais" atlasiet="$LastRow" />
        </XSL:lietot veidnes>
      </XSL:kad>

      <XSL:Pretējā gadījumā>
        <XSL:lietot veidnes atlasiet="." režīms="itemstyle">
        </XSL:lietot veidnes>
      </XSL:Pretējā gadījumā>
    </XSL:izvēlieties>
  </XSL:Veidne:>

Piezīmes apraksta izmaiņas mērķis.

protams, "OuterTemplate.CallItemTemplate" sevi sauc no citas veidnes. Atrodiet šo veidni, meklējot šo teksta virkni:

<XSL:Veidne: vārds="OuterTemplate.Body">

Ritinātu instrukcijas OuterTemplate.Body un ievietojiet parametru LastRow, šādi (parādītas kā komentāri kursīvā):

<XSL:zvanu veidni vārds="OuterTemplate.CallItemTemplate">
  <XSL:ar param vārds="CurPosition" atlasiet="$CurPosition" />
  <!-- LastRow parametra ievietošana. -->
  <XSL:ar param vārds="LastRow" atlasiet="$LastRow"/>
</XSL:zvanu veidni>

Pēc visa šī, mums beidzot ir iestatīts pareizi, tāpēc ka mūsu ItemStyle.xsl var izstarot lietas <tabula> tagi ir īstajā vietā.

ItemStyle.Xsl

PIEZĪME: Atkal, Pārbaudiet ItemStyle.xsl pēc tam, kad veicat jebkādas izmaiņas, lai varētu redzēt šo izmaiņu ietekme.

Mums te ir divi uzdevumi:

  • Aizstāt visu režģa veidni. Jūs varat kopēt/ielīmēt no apakšas.
  • Pievienot dažas mumbo gigants ārpus veidnes definīcija, kas ļauj "formatcurrency" veidni, lai tā strādātu. (Jūs varat pateikt, ka man ir niecīga rokturi XSL).

Pirmais, ItemStyle.xsl augšdaļā, pievienotu šo līniju:

  <!-- Dažas mumbo gigants, kas dod mums iespēju parādīt ASV. valūta. -->
  <XSL:decimāldaļu formātā vārds="personāls" ciparu="D" />

  <XSL:Veidne: vārds="Noklusējuma" atbilst="*" režīms="itemstyle">

Ņemiet vērā, ka es pievieno tieši pirms <XSL:veidnes nosaukums = "Default" …> definīcijas.

Nākamo, doties atpakaļ uz mūsu Grid veidni. Aizstāt visu režģa veidni ar kodu zemāk. Tas ir pamatīgi komentēja, bet Nevilcinieties nosūtīt pa e-pastu man vai atstāt komentārus par manu blogu, ja jums ir jautājumi.

  <XSL:Veidne: vārds="Režģis" atbilst="Rindu[@Style = "Grid"]" režīms="itemstyle">

    <!--
      ContentMain.xsl iet CurPos un pēdējā.
      Mēs izmantot šo iespēju nosacīti izdala atvērt un aizvērt <tabula> Tags.
    -->
    <XSL:param vārds="CurPos" />
    <XSL:param vārds="Pēdējais" />

    <!-- Šie mainīgie ir nepārveidota no standarta ItemStyle.xsl -->
    <XSL:mainīgais vārds="SafeImageUrl">
      <XSL:zvanu veidni vārds="OuterTemplate.GetSafeStaticUrl">
        <XSL:ar param vārds="UrlColumnName" atlasiet="'ImageUrl'"/>
      </XSL:zvanu veidni>
    </XSL:mainīgais>
    <XSL:mainīgais vārds="SafeLinkUrl">
      <XSL:zvanu veidni vārds="OuterTemplate.GetSafeLink">
        <XSL:ar param vārds="UrlColumnName" atlasiet="'LinkUrl'"/>
      </XSL:zvanu veidni>
    </XSL:mainīgais>
    <XSL:mainīgais vārds="DisplayTitle">
      <XSL:zvanu veidni vārds="OuterTemplate.GetTitle">
        <XSL:ar param vārds="Nosaukums" atlasiet="@Title"/>
        <XSL:ar param vārds="UrlColumnName" atlasiet="'LinkUrl'"/>
      </XSL:zvanu veidni>
    </XSL:mainīgais>
    <XSL:mainīgais vārds="LinkTarget">
      <XSL:Ja tests="@OpenInNewWindow = "True"" >_ blank</XSL:Ja>
    </XSL:mainīgais>

    <!--
      Šeit mēs definētu mainīgo, "tableStart".  Tas satur HTML, ko mēs izmantojam, lai noteiktu sākuma tabulā, kā arī kolonnu etiķetēm.  Ņemiet vērā, ka, ja CurPos = 1, tā ietver HTML tagu CDATA.
      Pretējā gadījumā, tā būs tukša.

      TableStart vērtība ir emited, katru reizi, kad tiek saukts ItemStyle, izmantojot ContentQueryMain.xsl.
    -->
    <XSL:mainīgais vārds="tableStart">
      <XSL:Ja tests="$CurPos = 1">
        <![CDATA[
        <tabulas apmales = 1>
          <TR bgcolor = "blue">
            <TD><fonta krāsa = "white"><b>Projekta nosaukums</b></fontu></TD>
            <Līdzināt TD = "pa labi"><fonta krāsa = "white"><b>Pabeigtu datumu</b></fontu></TD>
            <Līdzināt TD = "pa labi"><fonta krāsa = "white"><b>Budžets</b></fontu></TD>
            <Līdzināt TD = "pa labi"><fonta krāsa = "white"><b>Faktisko izdevumu</b></fontu></TD>
            <TD><fonta krāsa = "white"><b>Vispārējo statusu</b></fontu></TD>
          </TR>
        ]]>
      </XSL:Ja>
    </XSL:mainīgais>

    <!--
      Citu mainīgo, tableEnd vienkārši definē noslēguma tabulas tagu.

      Ar tableStart, tas vienmēr ir emited.  Tas ir iemesls, kāpēc tās vērtība tiek piešķirta nosacīti pamatojas uz to, vai mēs esam nodoti pēdējā rindā, ContentQueryMain.xsl.
    -->
    <XSL:mainīgais vārds="tableEnd">
      <XSL:Ja tests="$CurPos = $Last">
        <![CDATA[ </tabula> ]]>
      </XSL:Ja>
    </XSL:mainīgais>

    <!--
      Vienmēr izstaro tableStart saturs.  Ja tas nav pirmajā rindā mums garām ContentQueryMain.xsl, tad mēs zinām, ka tās vērtība būs tukšs.

      Atspējot izvades izbēgt, jo, kad tas tableStart nav tukša, tā ietver faktisko HTML, ka mēs vēlamies, lai sniegtie pārlūku.  Ja mums nav pateikt XSL parser, lai atspējotu izvades bēg, tas radīs sīkumi, piemēram "&lt;tabula&gt;" nevis par"<tabula>".
    -->
    <XSL:vērtību no atlasiet="$tableStart" atspējot izvades bēg=""/>


    <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:vērtību no atlasiet="@Project_x005F_x0020_Name"/>
      </TD>

      <TD Līdzināt="tiesības">
        <XSL:vērtību no atlasiet="@Project_x005F_x0020_End_x005F_x0020_Date"/>
      </TD>

      <TD Līdzināt="tiesības">
        <XSL:zvanu veidni vārds="FormatCurrency">
          <XSL:ar param vārds="vērtība" 
atlasiet="@Project_x005F_x0020_Budget"></XSL:ar param> </XSL:zvanu veidni> </TD> <TD Līdzināt="tiesības"> <XSL:zvanu veidni vārds="FormatCurrency"> <XSL:ar param vārds="vērtība" atlasiet="@Project_x005F_x0020_Expenses">
</XSL:ar param> </XSL:zvanu veidni> </TD> <TD> <XSL:vērtību no atlasiet="@Project_x005F_x0020_Status"/> </TD> <!-- Visas šīs darbības ir komentēja noskaidrot lietas. Tomēr, nogādājiet to atpakaļ un stuff to <TD> lai skatītu tā efektu. --> <!-- <div id = "linkitem" Class = "postenis"> <XSL:Ja tests "virknes garums =($SafeImageUrl) != "0"> <div class = "attēla apgabala kreisajā"> <href = "{$SafeLinkUrl}" TARGET = "{$LinkTarget}"> <IMG class = "attēlu-fiksēta platuma" src = "{$SafeImageUrl}"
ALT = "{@ImageUrlAltText}"/> </a> </DIV> </XSL:Ja> <div class = "saites vienums"> <XSL:zvanu veidni
name="OuterTemplate.CallPresenceStatusIconTemplate"/> <href = "{$SafeLinkUrl}"
TARGET = "{$LinkTarget}" nosaukums = "{@LinkToolTip}"> <XSL:vērtību, atlasiet = "$DisXSLyTitle" /> </a> <div class = "apraksts"> <XSL:vērtību, select="@Description" /> </DIV> </DIV> </DIV>
--> </TR> <!-- Izstarot noslēguma tabulas tagu. Ja mēs neesam pēdējā rindā, tas būs tukšs. --> <XSL:vērtību no atlasiet="$tableEnd" atspējot izvades bēg=""/> </XSL:Veidne:> <XSL:Veidne: vārds="FormatCurrency"> <XSL:param vārds="vērtība" atlasiet="0" /> <XSL:vērtību no atlasiet='skaitļa formatēšana($vērtība, "$DDD,DDD,DDD.DD", "nodrošinājums ar personālu")' /> </XSL:Veidne:>

Standarta WSS/sūnu datu ievades ekrāniem neatbalsta kaskadētas nolaižamie saraksti (vai citu iekšējo-no sakariem)

ATJAUNINĀJUMS (04/2008): Šo lielo blog entry rāda labu javascript balstīta pieeja šai problēmai: http://webborg.blogspot.com/2008/04/add-functions-and-events-to-sharepoint.html

ATJAUNINĀT II: (04/2008): Šī bloga ieraksts arī izskatās daudzsološi: http://www.cleverworkarounds.com/2008/03/13/free-mosswss-2007-web-part-hide-controls-via-javascript/

Vairākas reizes nedēļā, Ja nav ikdienas, foruma lietotāji aprakstīt prasība, ka būtu izpildīti, parasti izmantojot kaskādes nolaižamie saraksti. Piemēram, Man ir divas nolaižamā saraksta vadīklas:

  • Sarakstu ar ASV. valstis
  • Sarakstu ar ASV. pilsētās.

Kā atbildīgo UI sniedzēji, mēs vēlamies, lai darbotos kā šis:

  • Paul izvēlas ASV. valsts no nolaižamā.
  • Tas izraisa pilsētu nolaižamā saraksta, lai filtrētu tikai šīm pilsētām, kas pieder pie atlasītās valsts.
  • Paul izvēlas pilsētu no šā filtrētā sarakstā.

Nav gatavu atbalsta šo līdzekli. patiesībā, nav OOB atbalstu saistībā ar jebkāda veida tiešo iekšējo formu komunikācijas. Tas ietver programmiski slēpšanās/iespējošana/atspējošana lauki, atbildot uz lauka izmaiņas citur veidlapā.

Reāls mērķis šo pantu varētu raksturot iespējamos risinājumus, un tie ir varianti, kā zinām, viņiem:

  1. Izveidot pielāgotas kolonnas tips. Kā pielāgotu kolonnu developer, jums ir pilnīga kontrole pār pasauli"" šīs pielāgotās kolonnas. Jūs varat ieviest kaskādes nolaižamo sarakstu tādā veidā.
  2. Apsveriet, izmantojot darbplūsmu. Dažos gadījumos, vēlaties automātiski piešķiriet vērtību laukam, kas, pamatojoties uz cita lauka vērtību. Šajā gadījumā, jūs parasti mēģina izmantot aprēķinātā kolonnā, bet dažas reizes, tas vienkārši nebūs iegūt darbu paveikt. SharePoint Designer darbplūsma ir salīdzinoši administrēt draudzīgu alternatīvu krišanu lejup, uz kodu un visual studio. Ja jūs iet šo ceļu, apzināties šo problēmu risināt ar Šajā rakstā (http://paulgalvin.spaces.live.com/blog/cns!CC1EDB3DAA9B8AA!405.entry).
  3. Notikumu apdarinātāji: Piemēram, darbplūsmas, tas ir pēc faktu risinājums. Notikumu apdarinātājs ir .NET sastāvdaļu (C#, VB.NET) kuru SharePoint nodod vadību. Jūs attīstīt objekts ir piekļuve datiem, saraksta (un visa objekta modeli) un var veikt visus nepieciešamos aprēķinus.
  4. Izmantot programmu SharePoint Designer, lai izveidotu pielāgotus ievades formu. Man nav tieša pieredze ar šo pieeju, but I hear they are doing good things with NewForm.aspx these days 🙂
  5. Roll savu ASP.NET datus ieraksta funkcija (kā atsevišķa web lappusi vai web daļu) un tā vietā izmantot.

Ja kāds zina citu un/vai labākas iespējas, Lūdzu, sūtiet savu komentāru, un I'll atjaunināt šo ziņu pamattekstā.

<beigām />

Technorati Tags: Technorati Tags:

Izveidot stabiņu grafiem SharePoint

Pārskats:

(ATJAUNINĀJUMS 12/04/07: Beigās, saites uz citu blogu, kas risina šo caur ļoti interesantu web daļu papildina vēl viens interesants resurss)

Šī bloga ieraksts ir aprakstīts, kā izveidot bar graph koplietošanas vidē SharePoint. Tas darbojas WSS un MOSS vidēs, kā tas tikai ir atkarīgs no datu skata web daļa.

Kopumā pieeja ir šādi:

  1. Veidot sarakstu vai dokumentu bibliotēku, kas satur datus, kurus vēlaties attēlot grafā.
  2. Novietot saistīto dokumentu bibliotēkā / pielāgota saraksta uz lapu un to konvertēt datu skata web daļa (DVWP).
  3. Modificēt DVWP XSL, lai ģenerētu HTML, kas parāda, kā grafiku.

Biznesa scenāriju / Uzstādīšanas:

Man ir izveidojis pielāgotu sarakstu ar standarta virsraksta kolonnas un viena papildu kolonnas, "Statuss". Šo modeļu (ļoti vienkāršoti) Izdevumu atļaujas"" scenāriju, kur nosaukumā norāda projekta un statusa vērtību no saraksta:

  • Ierosināja
  • Procesā
  • Apstājies

Mērķis ir radīt interaktīvu horizontālu joslu diagrammu, kas parāda šo statusa kodi.

Ir aizpildīts saraksts un tas izskatās šādi:

attēlu

Izveidot datu skata Web daļa:

DVWP izveidot pielāgotu sarakstu pievienošana lapai (vietnes lapā manā gadījumā) un izpildiet norādījumus šeit (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!395.entry).

Kā _ arī vienkārši izveidot DVWP, mums arī iestatīt rekvizīta peidžeru, lai rādītu visas pieejamās rindas. Man, tas izskatās kaut kas līdzīgs šim:

attēlu

Šajā brīdī, Es vienmēr aizvērt VPD un pārlūka. Pēc tam vēlreiz atvērt lapu, izmantojot pārlūkprogrammu. Tas palīdz izvairīties no nejauši mucking augšu web daļas izkārtojumu lapā.

Modificēt XSLT:

Ir pienācis laiks mainīt XSLT.

Es vienmēr izmantojiet visual studio šim. (Sk. šeit svarīga piezīme par intellisense, kas palīdzēs jums daudz par).

Izveidot tukšu projektu pievieno četrus jaunus failus (aizstāt vārdus "oriģināls" un "New" pēc vajadzības):

  • Original.XSLT
  • New.XSLT
  • Sākotnējā Params.xml
  • Jaunu Params.xml

Manā gadījumā, tas izskatās šādi:

attēlu

Modificēt web daļu un kopēt parametri un XSL "sākotnējā" versiju Visual Studio.

Šeit mērķis ir izraisīt XSL transformācijas atgriezīsimies uz HTML, kas atveido kā diagrammu no DVWP vaicājuma rezultātus.

Šajā nolūkā, tas palīdz vispirms apsvērt, kādi HTML vajadzētu izskatīties pirms mēs iegūt sajaukt ar ārprāts, kas ir pazīstams kā "XSL". (Lai būtu skaidrs, Šis ir vienkāršs piemērs; Nelietojiet to ierakstīt vai copy/paste vizuālā studija. Es sniegt pilnīgu triecienu sākuma punkts, ka turpmākajā write-up). Šādu paraugu grafiks tiek atveidots kā HTML tūlīt pēc:

Sample Bar Graph

Atbilstošu HTML:

<HTML>
<organizācija>
<centrs>
<tabulas platums = 80 %>
<TR><TD><centrs>Horizontālu joslu diagrammu</TD></TR>
<TR>
<Līdzināt TD = "centrs">
<tabulas apmales = "1" Width = 80 %>
<TR>
<TD width = 10 %>Atvērt</TD>
<TD><tabulas cellpadding ="0" cellspacing ="0" u = 0 width = 50 %><TR bgcolor = red><TD>&nbsp;</TD></TR></tabula></TD>
</TR>
<TR>
<TD width = 10 %>Slēgts</TD>
<TD><tabulas cellpadding ="0" cellspacing ="0" u = 0 width = 25 %><TR bgcolor = red><TD>&nbsp;</TD></TR></tabula></TD>
</TR>
<TR>
<TD width = 10 %>Apstājies</TD>
<TD><tabulas cellpadding ="0" cellspacing ="0" u = 0 width = 25 %><TR bgcolor = red><TD>&nbsp;</TD></TR></tabula></TD>
</TR>
</tabula>
</TD>
</TR>
</tabula>
</organizācija>
</HTML>

Es mēdzu miris vienkārša pieeja, lai manas joslas izveide, nosakot fona krāsas kārtas uz "sarkano".

Līdzņemšanai te tas ir: Beigās, viss, ko mēs darām, ir izveidot HTML ar rindām un kolonnām.

XSLT veidnes:

Esmu kopēt XSLT, kas rada horizontālu joslu diagrammu. Tas ir diezgan labi komentēja, tāpēc es paradis pievienot daudz šeit, izņemot šīs piezīmes:

  • Es sāku ar noklusējuma XSL, kuru SharePoint Designer deva man, kad es pirmo reizi izveidota DVWP.
  • Man bija iespēja samazināt to uz leju no SPD 657 rindas, lai 166 līnijas.
  • Nav haoss ap ar XML faila parametri (kas ir atdalīts no XSL, un jūs zināt, ko es domāju, kad dodaties uz modificēt DVWP, pati; ir divi failu var modificēt). Tomēr, lai vienkāršotu to, Gandrīz visi no tiem bija noņemt no XSL. Tas nozīmē, ka, ja jūs vēlaties, lai izmantotu tos parametrus,, jums ir nepieciešams pievienot to mainīgo definīcijām atpakaļ uz XSL. Tas būs viegli, jo jums būs oriģināls XSL mainīgo definīcijām visual studio projektu.
  • Jums vajadzētu būt iespējai nokopējiet un ielīmējiet šo tieši visual studio projektu. Pēc tam, noņemt manas sarunas un ievietot savus zvanus uz "ShowBar".
  • Darbu, izveidojot rakšanās <href => šādi: http://server/List?FilterField1=fieldname&FilterValue1=actualFilterValue. Šī metode var būt vērtības citos kontekstos. Sākumā, Es domāju, ka būtu nepieciešama sarežģītāka formāts neatbilst: http://server/List/AllItems.aspx?View={guid}&FilterField1=blah&FilterValue1=blah, bet mana vidē, kas nav nepieciešama. Saraksta URL tiek nodota mums SharePoint, tāpēc tas ir diezgan viegli vispārināt.

Te nu tas ir:

<XSL:izvēršamā stila lapu versija="1.0" neiekļaut rezultātus prefiksus="r z o s ddwrt dt msxsl" 
xmlns:msxsl="urn:shēmas-microsoft-com:XSLT" xmlns:XSL="http://www.w3.org/ 1999/XSL/transformāciju"
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:shēmas-microsoft-com:biroja" xmlns:s="UUID:BDC6E3F0-6DA3-11D1-A2A3-00AA00C14882"
xmlns:DT="UUID:C2F41010-65B3 - 11. d. 1-A29F-00AA00C14882" xmlns:r="urn:shēmas-microsoft-com:rindkopu" xmlns:z="#RowsetSchema"
xmlns:ddwrt2="urn:FrontPage:iekšējā"
> <XSL:izvades metode="HTML" atkāpes="" /> <XSL:decimāldaļu formātā Nana="" /> <XSL:param vārds="ListUrlDir"></XSL:param> <!-- Es gribētu, lai atbalstītu rakšanās. --> <XSL:Veidne: atbilst="/" xmlns:SharePoint="Microsoft.SharePoint.WebControls"
xmlns:__designer=http://schemas.microsoft.com/WebParts/v2/DataView/designer xmlns:ASP="http://schemas.microsoft.com/ASPNET/20"
> <XSL:mainīgais vārds="dvt_StyleName">Tabula</XSL:mainīgais> <XSL:mainīgais vārds="Rindas" atlasiet="/dsQueryResponse/rindu/rindas" /> <XSL:mainīgais vārds="dvt_RowCount" atlasiet="skaits($Rindas)" /> <XSL:mainīgais vārds="IsEmpty" atlasiet="$dvt_RowCount = 0" /> <XSL:mainīgais vārds="dvt_IsEmpty" atlasiet="$dvt_RowCount = 0" /> <XSL:izvēlieties> <XSL:kad tests="$dvt_IsEmpty"> Nav datu grafiku!<br/> </XSL:kad> <XSL:Pretējā gadījumā> <!-- Interesanti sīkumi sākas šeit. Mums ir nepieciešams, lai definētu mainīgo lielumu katrai rindai pāri grafā: kopējo elementu skaitu un procenti no kopējā. --> <XSL:mainīgais vārds="totalProposed" atlasiet="skaits(/dsQueryResponse/rindu/rindas[normalizē telpa(@Status) = "Ierosināto"])" /> <XSL:mainīgais vārds="percentProposed" atlasiet="$totalProposed div $dvt_RowCount" /> <XSL:mainīgais vārds="totalInProcess" atlasiet="skaits(/dsQueryResponse/rindu/rindas[normalizē telpa(@Status) = "Procesā"])" /> <XSL:mainīgais vārds="percentInProcess" atlasiet="$totalInProcess div $dvt_RowCount" /> <XSL:mainīgais vārds="totalStalled" atlasiet="skaits(/dsQueryResponse/rindu/rindas[normalizē telpa(@Status) = "Apstājies"])" /> <XSL:mainīgais vārds="percentStalled" atlasiet="$totalStalled div $dvt_RowCount" /> <!-- Mēs definējam mūsu HTML tabula. Esmu aizņēmumu no dažiem standarta SharePoint stili šeit veikt konsekventu. Es domāju, ka tas būs godu pasaules css failā veiktajām izmaiņām kā arī dizaina ignorē. --> <tabula platums="100%" cellspacing="0" cellpadding="2" stils="apmali pa labi: 1 Solid #C0C0C0; apakšējās apmales: 1 Solid #C0C0C0; apmali pa kreisi stils: ciets; apmali pa kreisi platuma: 1; apmales augšējās stils: ciets; apmales augšējās platuma: 1;"> <TR> <TD Līdzināt="centrs"> <tabula apmale="1" platums="100%"> <!-- Par katru statusu, ko mēs vēlamies attēlot grafā, mēs saucam par "ShowBar" Veidne:. Mēs panesam to: 1. Rindas etiķeti. Tas ir pārveidots par hipersaiti. 2. Procenti (mainīgajam, no augšas). 3. Kodu no saraksta pamatā faktiskā lauka nosaukuma. Tas nav nepieciešams atbilstoši etiķetes rādīt. 4. Lauka vērtība atbilst par #3. 5. Kopējie krājumi no šī statusa kods (ne visas statusa kodi gala summas). Tas izstaro <TR></TR> un horizontālu joslu diagrammu, līniju. Katrs mēs vēlamies, lai apskatītu statusa kodam mēs saucam šo veidni. --> <XSL:zvanu veidni vārds="ShowBar"> <XSL:ar param vārds="BarDisplayLabel" atlasiet=""Ierosināto""/> <XSL:ar param vārds="BarPercent" atlasiet="$percentProposed"/> <XSL:ar param vārds="QueryFilterFieldName" atlasiet=""Statuss""/> <XSL:ar param vārds="QueryFilterFieldValue" atlasiet=""Ierosināto""/> <XSL:ar param vārds="TotalItems" atlasiet="$totalProposed"></XSL:ar param> </XSL:zvanu veidni> <XSL:zvanu veidni vārds="ShowBar"> <XSL:ar param vārds="BarDisplayLabel" atlasiet=""Apstājies""/> <XSL:ar param vārds="BarPercent" atlasiet="$percentStalled"/> <XSL:ar param vārds="QueryFilterFieldName" atlasiet=""Statuss""/> <XSL:ar param vārds="QueryFilterFieldValue" atlasiet=""Apstājies""/> <XSL:ar param vārds="TotalItems" atlasiet="$totalStalled"></XSL:ar param> </XSL:zvanu veidni> <XSL:zvanu veidni vārds="ShowBar"> <XSL:ar param vārds="BarDisplayLabel" atlasiet=""Procesā""/> <XSL:ar param vārds="BarPercent" atlasiet="$percentInProcess"/> <XSL:ar param vārds="QueryFilterFieldName" atlasiet=""Statuss""/> <XSL:ar param vārds="QueryFilterFieldValue" atlasiet=""Procesā""/> <XSL:ar param vārds="TotalItems" atlasiet="$totalInProcess"></XSL:ar param> </XSL:zvanu veidni> </tabula> </TD> </TR> </tabula> </XSL:Pretējā gadījumā> </XSL:izvēlieties> </XSL:Veidne:> <!-- Šī veidne, darbojas, rādot atsevišķas rindas bar graph. Jums droši vien veiksies tweaking šeit lielākā daļa. --> <XSL:Veidne: vārds="ShowBar"> <XSL:param vārds="BarDisplayLabel" /> <!-- lai parādītu etiķeti --> <XSL:param vārds="BarPercent"/> <!-- Procenti no kopējā. --> <XSL:param vārds="QueryFilterFieldName"/> <!-- Izmantota, lai pārlēktu uz vaicājumu & filtrs --> <XSL:param vārds="QueryFilterFieldValue"/> <!-- Izmantota, lai pārlēktu uz vaicājumu & filtrs --> <XSL:param vārds="TotalItems" /> <!-- kopējais skaits šajā barlabel --> <TR> <!-- Bar etiķete sevi. --> <TD klase="DV-formbody" platums="30%"> <!-- Šo nākamo pārskatu komplektu veido vaicājuma virkni, kas ļauj mums, lai urbt uz leju, lai filtrētu skatu pamatā esošos datus. Mēs izmantot dažas lietas šeit: 1. Mēs varam pāriet uz saraksta, lai filtrētu kolonnu FilterField1 un FilterValue1. 2. SharePoint iet mums galvenais parametrs, ListUrlDir, kas norāda uz pamatā esošo sarakstu, pret kuru šī DVWP ir "gaitas". Nav XSL fun? --> <XSL:teksts atspējot izvades bēg=""> <![CDATA[<a href ="]]></XSL:teksts> <XSL:vērtību no atlasiet="$ListUrlDir"/> <XSL:teksts atspējot izvades bēg=""><![CDATA[?FilterField1 =]]></XSL:teksts> <XSL:vērtību no atlasiet="$QueryFilterFieldName"/> <XSL:teksts atspējot izvades bēg=""><![CDATA[&FilterValue1 =]]></XSL:teksts> <XSL:vērtību no atlasiet="$QueryFilterFieldValue"/> <XSL:teksts atspējot izvades bēg=""><![CDATA[">]]></XSL:teksts> <XSL:vērtību no atlasiet="$BarDisplayLabel"/> <XSL:teksts atspējot izvades bēg=""><![CDATA[</a>]]></XSL:teksts> <!-- Tālāk mazliet rāda dažus numurus formātā: "(kopā / % kopā)" --> (<XSL:vērtību no atlasiet="$TotalItems"/> / <!-- Tas rada jauku procentu etiķete mums. paldies, Microsoft! --> <XSL:zvanu veidni vārds="percentformat"> <XSL:ar param vārds="procenti" atlasiet="$BarPercent"/> </XSL:zvanu veidni>) </TD> <!-- Beidzot, izstarot <TD> tagu Bārs pati.--> <TD> <tabula cellpadding="0" cellspacing="0" apmale="0" platums="{kārta($BarPercent * 100)+1}%"> <TR BGColor="sarkana"> <XSL:teksts atspējot izvades bēg=""><![CDATA[&nbsp;]]></XSL:teksts> </TR> </tabula> </TD> </TR> </XSL:Veidne:> <!-- Tas ir ņemts tieši no dažiem XSL konstatēts, MS veidnē. --> <XSL:Veidne: vārds="percentformat"> <XSL:param vārds="procenti"/> <XSL:izvēlieties> <XSL:kad tests="skaitļa formatēšana($procenti, '#,##0%;-#,##0%')= 'Nana'">0%</XSL:kad> <XSL:Pretējā gadījumā> <XSL:vērtību no atlasiet="skaitļa formatēšana($procenti, '#,##0%;-#,##0%')" /> </XSL:Pretējā gadījumā> </XSL:izvēlieties> </XSL:Veidne:> </XSL:izvēršamā stila lapu>

Rezultāti:

XSL no augšas rada šis grafiks:

attēlu

Detalizēti pamatā esošos datus, noklikšķinot uz statusa kods:

attēlu

Noslēdzot domas:

Tas ir ģeneralizēta?

Es mīlu šo grafēšanas koncepciju, bet es ienīst faktu, ka man iet, un darīt tik daudz roku kodēšana. Esmu devis mazliet doma, vai tas var vispārināt, un es esmu optimistisks, bet es esmu arī mazliet baismīgs, ka var būt kaut kur pa ceļu, kas jebkurā darba ap to vairs nepiedāvās ķieģeļu mūra. Ja kāds ir dažas labas idejas par šo, Lūdzu pierakstiet komentārus vai e-pasts mani.

Vertikālas diagrammas:

Tas ir horizontālu joslu diagrammu. Tas noteikti ir iespējams izveidot vertikālas diagrammas. Mums ir nepieciešams, lai mainītu HTML. Varētu startēt tādā pašā veidā: Izveidot HTML atveidojumu vertikālo joslu diagrammu un pēc tam saprast, kā nokļūt, izmantojot XSL. Ja kāds ir ieinteresēts, ka, Es varētu pārliecināt to izmēģinātu, un izstrādāt kinks. Ja kāds jau ir darīts, ka, please let me know and I’ll gladly link to your blog 🙂

Domāju, ka problēma ar vertikālo diagrammu, ir uzlīmes grafika ir grūtāk pārvaldīt, Protams, nav neiespējami, bet.

Lauka nosaukums Gotcha:

Ir vismaz divas lietas, pievērsiet uzmanību ar lauku nosaukumiem.

Pirmais, lauka nosaukums, ar atstarpi ir izbēguši XSL. Tas droši vien būs jautājums šeit:

        <XSL:mainīgais vārds="totalProposed" 
atlasiet="skaits(/dsQueryResponse/rindu/rindas[normalizē telpa(@Status) = "Ierosināto"])" />

Ja jūsu "statuss" kolonna patiesībā ir nosaukta "statusa kods" tad jums vajadzēs atsaukties uz to kā "Status_x0020_Code":

   <XSL:mainīgais vārds="totalProposed" 
atlasiet="skaits(/dsQueryResponse/rindu/rindas[normalizē telpa(@Status_x0020_Code) = "Ierosināto"])" />

Otrais, un es esmu mazliet neskaidrs šajā, bet jums arī ir par brīdinājumu par lauka nosaukuma izmaiņas. Ja jūsu laukā "statusa koda nosaukums" un pēc tam vēlāk par, pārdēvēt to "AFE Status", "iekšējais nosaukums" nevar mainīt. Iekšējais nosaukums joprojām būs "statusa kods" un jābūt atsaucas kā "Status_x0020_Code". "Citi resursi" saites var palīdzēt diagnosticēt un novērst šāda veida problēmas.

Par šo krāsu:

Es paņēmu "sarkans" jo tas ir patīkami man tajā brīdī. Tas nebūtu liels darījumu, lai parādītu dažādās krāsās tā, lai nodrošinātu vairāk nekā tikai vizuālo aprakstu par skaitli, bet arī sniegt noderīgas veiktspējas Pamatrādītāju. Piemēram, Ja procentuālo daudzumu "apstājies" AFE ir ir > 10% tiek rādīta sarkanā, Pretējā gadījumā liecina, ka melnā krāsā. Lietošanas <XSL:izvēlieties> lai to paveiktu.

Citi resursi:

Laimīgs, pārveidojot!

<beigām />

Abonēt manu blogu!

Technorati Tags: Technorati Tags: , , , , , ,

Klāt OM datus, lietojot pielāgotu sarakstu (vai, Vēl cits OM datu Displayor [tāpat kā YACC, bet dažādu])

Šodien, Es pavadīju nedaudzas stundas jāsadzen cēloni aiz ziņojumu "Ievadītais kolonnas nosaukums jau tiek lietots vai rezervēti. Izvēlieties citu nosaukumu."

Varētu izveidot attiecīgās kolonnas, dzēsta un izveidota atkārtoti citā vidē, tāpēc es zināju, ka tas nav rezervēts. Tomēr, Es vienkārši nevarēju atrast kolonnas jebkur, izmantojot standarta SharePoint lietotāja interfeisu jebkurā vietā šajā vietņu kolekcijā.

I ievietojis MSDN forums šeit un nelokāms Andrew Woodward norādīja mani virzienā uz pamatā esošo datu objektu modelis.

Es devos uz codeplex Daži rīki, kas palīdzētu man ieskatīties OM pamatdatus un palīdzi man atrast problēmas atrast.

Es to izmēģināju vairākus rīkus un viņi bija ļoti foršs un interesants, bet beigu beigās, UI nebija pietiekami labs, lai mans mērķis. Es neesmu kritizējot tos ar jebkādiem līdzekļiem, bet skaidri rīks veidotāji nebija mana problēma prātā, veidojot viņu UI :). Lielākā daļa cilvēku, šķiet, veikt ieguldījumus taisnīgu daudz laika un pūļu darbstaciju veidošanā / klientu programmās, kas sniedz koka skatu, un tā tālāk ar peles labo pogu noklikšķiniet konteksta izvēlnes. Tie ir jauki un tādā garā, bet tas ir daudz darba, lai izveidotu top-of--line lietotāja pieredzi, kas arī ir ļoti elastīgs.

Man tiešām bija vajadzīga atbilde uz šo problēmu. Tas notika ar mani, ja es varētu saņemt visas vietnes kolonnas pielāgoto sarakstu vietņu kolekcijā, Varētu filtrēt, kārtot un veidot viedokli, kas varētu palīdzēt man atrast šo it kā esošu kolonnu (kas to izdarīja, BTW). Es devos uz priekšu un darīja, un stundu vai divas vēlāk, bija manas vietnes kolonnām, kas iepildīta pielāgotu sarakstu ar grupas, kārtošanu un tā tālāk. Es atradu sava atbilde pēc piecām minūtēm.

Ja es veiksmīgi pārņemt pasauli, Es domāju, ka būs dekrētu, ka visām SharePoint rīkus sniedzējiem nopietni apsvērt atsedzot to objekta modeļa datu pielāgotu sarakstu. Tādā veidā, Man ir tiesības meklēt jebkurā veidā es gribu (ierobežotas, protams, ar standarta sharepoint funkcionalitāti).

Technorati Tags: Technorati Tags: , ,