Løsning uden brug af kode: Viser dagene, da et SharePoint-listeelement sidst blev ændret

Løsning uden brug af kode: Viser dagene, da et SharePoint-listeelement sidst blev ændret

Bemærk!:  Vi vil gerne give dig den mest opdaterede hjælp, så hurtigt vi kan, på dit eget sprog. Denne side er oversat ved hjælp af automatisering og kan indeholde grammatiske fejl og unøjagtigheder. Det er vores hensigt, at dette indhold skal være nyttigt for dig. Vil du fortælle os, om oplysningerne var nyttige for dig, nederst på denne side? Her er artiklen på engelsk så du kan sammenligne.

9/20/2011 3:01 PM

ved Justin Joyce, LANtek

Bemærk!: I denne artikel er en del af en samling af indlæg fra fire år bloggens få punktet til SharePoint slutbrugere.

Oversigt: Brugerdefineret aldersfordelt rapporter med nogen kode

En af de ofte nødvendige funktionelle dele af et SharePoint-websted er en aldersfordelt saldoliste for opgaver eller listeelementer. Det vil sige, hvor mange dage/måneder er det blevet da dette listeelement sidst blev ændret?

Dette synes at være en meget simpel anmodning på overfladen. Når alle har vi datoer for elementer, der oprettes og ændres, vi har mulighed for at gemme brugerdefinerede datoer, når bestemte ændringer af elementer sker via Hændelsesmodtagere. Vi har beregnede kolonner, hvor vi kan omfatte Excel-lignende formler til at fungere sammen med vores oplysninger. Det ser ud som en ret direkte videresende tilbud. Vi Vælg et datofelt, oprette en beregnet kolonne, og benyt derefter en formel noget langs linjerne i [DateField]-[i dag]. AH, ikke så hurtigt via! Som alle, der har forsøgt at udføre opgaven "enkel" kender, forsøger at bruge noget i retning af [i dag] i en beregnet kolonne årsager problemer. Forsøger at indsætte [i dag] i den beregnede kolonnes formelboksen kan give dig en fejlmeddelelse i stil med følgende:

Fejlmeddelelse

Hvorfor er det? Lige godt, og det har at gøre med måde, beregnes er beregnede kolonner.

Lad os en simpel formel som et eksempel:

= Hvis ( [Kolonne1] < = [Kolonne2], "OK", "Ikke OK")

Alt dette siger er, hvis Kolonne1 er mindre end eller lig med Kolonne2, derefter vist OK, ellers vises ikke OK. Dette er en typisk temmelig grundlæggende formel for en beregnet kolonne og det giver en grundlæggende antagelse om listeelementet, der indeholder disse kolonner: værdierne for Kolonne1 og Kolonne2 aldrig vil kunne ændre uden en opdatering begivenhed på listeelementet.

Det er rigtigt, beregnede kolonner kun genberegne når listen er opdateret (eller oprettet) da de forudsætter, at de oplysninger, du foretager beregningerne er indeholdt i selve elementet. Dette opretter et problem, når du forsøger at bruge noget, ændres uafhængigt af elementets felter, som dags dato.

Nu har jeg blev ikke i mødet, hvor de besluttede dig for, at dette er den måde, beregnede kolonner skal fungere, men, hvis jeg skulle foretage en nogle kvalificerede gæt, jeg vil forudsætter, at de fungerer denne måde for ydeevnen. Forestil dig, hvis du har en liste over flere tusinde elementer, hver især indeholdt en beregnet kolonne, der skal bruges en "direkte" opdatering. Der medfører, som nogle ordning, måske skulle et timerjob navigere gennem hvert element, der indeholdt den beregnede kolonne every så ofte og opdatere dens værdi. Det kan meget beskatning i ydeevne fordi med større installationer dette job muligvis konstant kører og ændre ting. Det er kun mine gæt, men det giver helt lidt af mening, hvis du synes om den.

Der er nogle forslag til lignende løsninger flydende i forvejen, der involverer at snydes SharePoint i at acceptere værdien i dag ved først at oprette en kolonne med navnet i dag, og derefter føje den til formlen og derefter slette den. Dette er alle meget gode, men husk, hvad jeg sagde om ved opdatering af beregnede kolonner. Denne værdi ændres kun, når elementet opdateres, hvilket betyder, at dine værdier vil snart være forkerte, især i forbindelse med en dag beregning.

Jeg har set andre ved hjælp af intelligente JavaScript til at skrive værdierne til siden. Dette er den rigtige også, men jeg er ret meget categorically mod klientscript, når det kan forhindres.

Implementering:

Så Hvad skal du gøre? Beregnede kolonner er af spørgsmålet, så kaldet "genberegnes" funktioner som i dag. Det er muligt, at vi kan udvikle nogle brugerdefineret kode, der tager sig af dette til os som en beregnet kolonne, timerjob eller planlagt proces til at komme og opdatere hver enkelt element, der skal denne beregning, der er foretaget. Der bringer os tilbage til problemet med ydeevnen jeg nævnt i det sidste afsnit via, og desuden det er en skør løsning, der er meget specifikke for den/liste/webstedskolonne pågældende. Oven på disse to problemer, vil du også skal gå find en nerdy guy som selv, der kan kode og overtale ham at udvikle denne løsning for dig. Men der findes en nemmere måde!

Hvis du har rettigheder til at oprette felter og redigere sider på dit websted og har lidt af viden om XSLT og oprette visninger, kan du sammensætte en XSL-skabelon, der skal indgå i en listevisning og venlig hilsen beregner værdien hver gang der anmodes om siden. Dette scenarie fjerner vores vedrører over ydeevne og kræver ikke brugerdefineret kode skal udvikles og installeret via en løsning.

Perfekte. Så hvordan gør vi det?

  1. Opret eller Vælg det felt, der skal fungere som vores kilde. Det skal være et datoformat.

  2. Oprette vores felt, der skal fungere som en pladsholder for den værdi, der beregnes.

  3. Tilføj begge af disse felter til en indholdstype, og føje indholdstypen til en liste.

  4. Oprette en visning af den liste, der indeholder både kilde- og pladsholder kolonner.

  5. Overfør XSL-skabelon til biblioteket typografier.

  6. Angive egenskaben "XSL-Link" for den webdel i listevisning via Brugergrænsefladen.

  7. Sådan!

Lad os undersøge et eksempel på Brug store og små bogstaver, og gennemgå implementeringen. Vores kunde ville en visning af deres hovedlisten, der ville fortæller dem hvor lang tid en bestemt listeelement havde ved dens status. Denne liste indeholdt en brugerdefineret websted indhold type udledt fra elementtype og føjet til listen. Der var allerede, modtager en begivenhed på plads, der registrerer hver gang statusfeltet på listeelementet er blevet ændret og gemt denne dato til en kolonne med navnet "Dato Status ændres". Denne kabler er ikke påkrævet, og kan udføres med en hvilken som helst datofelt (det lige så sker dette er vores implementering, men gerne eksperimentere). Du skal som minimum er din kilde dato og pladsholder til at holde din beregning (flere oplysninger om dette i næste afsnit) føjet til listen, selvom jeg foreslår, at du bruger webstedskolonner og webstedets indholdstyper i tilfælde af, at du vil genbruge denne løsning i andre pl ACE-poster på webstedet.

Så har vi vores kilde dato, kan vi bruge i vores beregning mod dags dato. Nu kan vi oprette en brugerdefineret webstedskolonne skal bruges som en objektbeholder til vores beregnede værdi. I dette tilfælde vælger jeg at bruge en beregnet kolonne, da det ikke vil kunne ændres på den nye eller redigere element formularer, men kan vælges til visning i visningerne, da vi ikke vil brugere, der angiver vilkårlige værdier i til denne kolonne. Det kan være forvirrende som hvorfor det er ikke vises i visninger, osv.

Nu hvor vi har vores webstedskolonne, kan vi tilføje den til vores indholdstyper, der skal bruges på vores liste. Vi skal nu oprette vores visning, der senere tilpasses med vores XSLT. Kontrollér, at du opretter en standardvisning, der indeholder dato kildekolonnen og den nye beregnede kolonne, der skal fungere som en pladsholder for den beregnede værdi.

Vi har nu alt, som vi kræver, for at understøtte vores brugerdefinerede aldersfordelt saldoliste. Alt, forbliver opretter vores XSL-skabelon, uploade det til webstedets typografibiblioteket og knytte den til vores listevisning. XSL-skabelonen vi skal bruge, skal indeholde nogle normale SharePoint oprettede markering til at oprette visningen, samt vores egen brugerdefineret kode, der bruges til at tilsidesætte visse dele af dette og beregne vores ønskede værdi for os.

Give kreditkontrol, hvor kredit er forfaldne, XSL-skabeloner til at gøre de faktiske beregninger, jeg bruger til denne løsning er elskværdig imødekommenhed leveres af "swirch" på MSDN-foraene:
http://social.msdn.microsoft.com/Forums/en-US/ sharepointcustomization/tråd/aeda905b-9bc6-40c4-bd22-21306c5cb0d2 /

Hente XSL-typografiarket (aging.zip) jeg er lagt sammen findes her:
https://OneDrive.live.com/?cid=c262e8e2d59a86d9&permissionsChanged=1&id=C262E8E2D59A86D9! 104

Åbner det i din foretrukne tekstredigeringsprogram, du vil se masser af normale SharePoint XSL-markering til gengivelse af visningerne, hvis du beholde rulle ned til linje 357 vises starten af de brugerdefinerede skabeloner, jeg har føjet til markeringen, den første del er "DateDiff" temp sen efterfulgt af "beregne juliansk-dages" og "FieldRef_printTableCell_EcbAllowed.Days_x0020_At_x0020_Status". Dette er vores tre skabeloner, der skal sikre og vise vores beregninger i vores visninger. Hvis du vil bruge forskellige feltnavne end blev angivet tidligere i denne artikel, skal du gennemgå disse skabeloner og Erstat alle henvisninger til de andre navne. Husk, at i dette du vil bruge det interne navn i feltet ikke det viste navn.

Når du er tilfreds, skabelonen er klar til, gå til biblioteket typografi og Overfør det under mappen "XSL-typografiark" derefter kopiere ned linket til filen. Dette giver os mulighed for nemt at foretage ændringer i den senere, eller føje den til forskellige dele af webstedet, som vi Tak.

Derefter gå til listen, og vælg den visning, du oprettede tidligere i denne artikel. Menuen Klik på "Rediger side" "Webstedshandlinger".

Kommandoen Rediger side i menuen Webstedshandlinger

Finde din webdel i listevisning på siden, og Åbn menuen webdel ved at klikke på den lille nedadvendte pil i øverste højre hjørne. Vælg "Rediger webdel" i denne menu.

Kommandoen Rediger webdel på menuen Webdel

Dette åbner webdelens menu i højre side af dit browservindue.

Webdelsmenu

Klik på + til "Diverse" sektion, og find "XSL-linkejendom".

XSL-linkejendom på menuen Webdel

Indsæt link til XSL-filen i biblioteket typografier, som du kopierede tidligere ned (det kan være en relativ eller absolut link).

Link til XSL-fil indsat

Klik på "OK" for at gemme ændringerne og klik derefter på knappen "Stop redigering" under "Side" båndet øverst på siden.

Knappen Stop redigering på fanen Side

Hvis alt blev konfigureret korrekt bør du nu se tallene i kolonnen "Statuskolonnen dag kl.".

Statuskolonnen Dag kl., som viser tal

Og til sidst skal her er, hvad det ser ud med nogle testdata med forskellige datoer:

Aldersfordelt saldoliste, som viser testdata

Oversigt:

Der er: en flot formateret, robust og bedre ydeevne måde at oprette en aldersfordelt saldoliste i SharePoint., fuldføre med en simpel implementering uden brug af kode. Dette er helt et par mulige programmer bortset fra den brugseksempel vi set her. En anden almindelige scenarie for denne type rapport vedhæfte den til en liste over opgaver, så du kan se, hvor lang tid det er siden en opgave blev oprettet et hurtigt overblik.

Nyd!

– Justin

Justin Joyce, LANtek

Kommentarer

Trin mangler
10-8-2012 3:51 AM
ok jeg fulgt trinnene, men der skal være noget manglende - hvordan XSL ved, hvilken dato, der skal bruge, eller hvilket felt lægge dage siden til? bruger meget tid det når trin er mistes.

Uden brug af kode, accepteret!
8-30-2012 12:12 PM
jeg accepterer – jeg synes ikke dette virkelig tæller som "ikke-kode".
Interestingly, gennem nogle screwup af SharePoint, jeg har en arbejde beregnet kolonne med i dag... ikke sikker på, hvordan eller hvorfor jeg kan ikke få adgang til den for at gøre det igen, men den er stadig derfra og fungerer.

Formel til "Dage ved Status" beregnet kolonne?
5-2-2012 7:39 AM
Justin - Hvad er den formel, du har brugt til din "Statuskolonnen dag kl." beregnede webstedskolonne (pladsholderkolonne)? Var det "= i dag"?

SharePoint 2007
2-12-2011 11:29 AM
aktuelt jeg har ikke forsøgt at anvende denne løsning til SharePoint 2007, men jeg er ude i til den. Der er desværre ikke nogen XslLink egenskab, der er fået på webdelen via Brugergrænsefladen.

Gode indlæg
11-30/2011 9:53 AM
Hej,
gode indlæg.
jeg bruger SharePoint 2007.
jeg ikke har en diverse sektion som nævnt ovenfor.
Har du trin til konfiguration af en SP2007?
Tak.

SV: Uden brug af kode løsning: Viser dagene, da et SharePoint-listeelement sidst blev ændret
11-10-2011 8:24 AM
High Chris.
gode find!
jeg vil se nærmere på hvad du har offentliggjort forhåbentlig senere i dag og se, hvis jeg kan gøre denne løsning lidt mere robust.
jeg glad for, at du synes godt om indlægget, og jeg meget glad for, at du kunne finde en løsning på det europæiske datoformat. :)
-Justin

Løsning til europæiske dato formater
11-10-2011 6:45 AM
High igen Justin
til Orientering, at jeg har fundet en løsning på problemet med jeg tidligere nævnt på denne side
https://sharepointbydummies.wordpress.com/2011/07/13/possible-work-around-to-date-format-issue-sharepoint-2010/

Europæisk dato formater
7-10-2011 3:59 AM
High Justin
dette er en god løsning Tak, og kun slags ting jeg har brugt de seneste to dage leder du efter! Men jeg har lidt af et problem med den, og jeg håb om du kunne hjælpe mig.
jeg har ændret kode lidt til calcultate antallet af dage, indtil der sker noget, i stedet for siden, ved at skifte variablerne i den sidste linje i funktionen "DateDiff";

< xsl:value-for Vælg = "$JulianToday - $JulianStartDate" >< / xsl:value-af >

jeg er dog kun kunne få det til caclulate forskellen korrekt halvdelen af tiden. Så for eksempel med denne dato (format dd-MM/ÅÅÅÅ);

30/12-2011

beregnes korrekt, men med denne dato (samme format)

10-12-2011

beregnes som hvis Hvis 10-Dec-2011 i stedet for Oct-12-2011.
jeg forsøgte blot skifte placeringen af dagsvisning og månedsvisning værdierne i variablen "JulianStartDate".

< xsl: med parameteren navn = "Måned" select="substring(ddwrt:FormatDateTime(string($StartDate), 1033,"ÅÅÅÅMMDD"), 7, 2)" / >
< xsl: med parameteren navn = "Day" Vælg = "understreng (ddwrt:FormatDateTime (streng ($ Startdato), 1033, "ÅÅÅÅMMDD"), 5, 2) "/ >

, og dette rettes problemet med den anden dato, men den var derefter forkert for den første dato!
jeg har også har forsøgt at ændre Formaterdatoogklokkeslæt ringer for at bruge europæiske LCID'er og forskellige ændringer til den sidste parameter for Formaterdatoogklokkeslæt (fx ddMMyyyy, MMddyyyy) med de relevante justeringer understrengen position parametre uden at succes.
jeg vil meget sætter pris på en hvilken som helst råd, du kan tilbyde.
Tak,
Chris

Uden brug af kode
9-21/2011 4:27 AM
jeg synes ikke, at XSL berettiger som en "uden brug af kode" løsning, som forstå XSL-sprog ikke er for alle -, men det ikke involverer programmering. Ud over,: godt løsning, Tak!

Udvid dine Office-færdigheder
Gå på opdagelse i kurser
Få nye funktioner først
Bliv Office Insider

Var disse oplysninger nyttige?

Tak for din feedback!

Tak for din feedback! Det lyder, som om det vil kunne hjælpe, hvis du bliver sat i forbindelse med en af vores Office-supportteknikere.

×