Lösning inte kräver kod: Visar dagarna eftersom ett SharePoint-listobjekt senast ändrades

Lösning inte kräver kod: Visar dagarna eftersom ett SharePoint-listobjekt senast ändrades

Obs!:  Vi vill kunna erbjuda dig bästa möjliga supportinnehåll så fort som möjligt och på ditt språk. Den här sidan har översatts med hjälp av automatiserad översättning och kan innehålla grammatiska fel eller andra felaktigheter. Vår avsikt är att den här informationen ska vara användbar för dig. Vill du berätta för oss om informationen är till hjälp längst ned på sidan? Här är artikeln på engelska som referens.

9/20/2011 3:01 PM

genom att Justin Joyce LANtek

Obs!: I den här artikeln är en del av en samling inlägg från fyra år för bloggen får punkten för SharePoint slutanvändare.

Översikt: Anpassad åldrande rapporter med hjälp av ingen kod

En ofta begärda funktionella delar av en SharePoint-webbplats är en åldrande rapport för aktiviteter eller listobjekt. Med andra ord hur många dagar/månader har gått sedan den här listobjekt senast ändrades?

Det här verkar vara en enkel begäran på ytan. När alla har vi datum för objekt skapas och ändras, vi har möjlighet att lagra anpassad datum när vissa ändringar av objekt ske via händelsemottagare. Vi har beräknade kolumner där vi kan ta med Excel-formler du arbetar med våra information. Det verkar som en lösning där ganska direkt framåt. Vi väljer du ett datumfält, skapa en beräknad kolumn och gör sedan en formel något längs raderna i [DateField]-[i dag]. Visst inte så snabbt genom! Som alla som har försökt uppgiften ”enkla” vet visas försöker använda ungefär så [i dag] i en beräknad kolumn orsaker problem. Prova att infoga [i dag] i en beräknad kolumn formelrutan ger dig ett felmeddelande ungefär så här:

Felmeddelande

Varför är det här? Är den har att göra med hur beräknade kolumner beräknas.

Nu ska vi ta en enkel formel som ett exempel:

= Om ( [Column1] < = [Column2], ”OK”, ”inte OK”)

Allt detta står det är som om kolumn 1 är mindre än eller lika med Column2, visar OK, annars visas inte OK. Det här är en ganska typisk grundläggande formeln för en beräknad kolumn och det är en grundläggande antaganden om listobjektet som innehåller dessa kolumner: värdena för kolumn 1 och Column2 kommer aldrig att kunna ändra utan att en uppdatering händelse på listobjekt.

Som passar bäst, beräknade kolumner kommer bara beräkna om när listan uppdateras (eller skapat) eftersom de förutsätts det att den information som du beräknar finns i själva objektet. Då skapas ett problem när du försöker använda något som ändras oberoende av artikelns fält, till exempel dagens datum.

Nu har jag mötet om de beslutar att det här är det sätt som beräknade kolumner skulle fungera, men om jag har att göra en välgrundade gissning jag skulle förutsätts det att de fungerar som det här sättet för prestanda. Tänk dig om du har en lista med flera tusen objekt, som var finns en beräknad kolumn som behövs ”live”-uppdatering. Som skulle innebära att vissa funktion, skulle kanske ett tidsinställt jobb behöva gå igenom varje objekt som innehåller den beräknade kolumnen every så ofta och uppdatera dess värde. Det kan mycket beskattning termer prestanda eftersom med större distributioner jobbet kan hela tiden kör och ändra saker. Som är min gissning, men det är lite av vettigt om du tycker om den.

Det finns några förslag på liknande lösningar flytande ute som innebär att lura SharePoint i till att acceptera en dag värde genom att först skapa en kolumn med namnet idag, och sedan lägga till i formeln och sedan raderas. Det här är alla bra och användbara, men kom ihåg vad jag SA om när beräknade kolumner har uppdaterats. Det här värdet ändras bara när objektet uppdateras vilket betyder att värdena kommer snart att felaktig, särskilt när det gäller en dag beräkning.

Jag har sett andra med hjälp av smarta JavaScript för att skriva värden till sidan. Detta kan även fungera, men jag är ganska mycket categorically mot klientskript när det går att undvika.

Implementering:

Så vad kan jag göra? Beräknade kolumner är ut från frågan för så kallade ”ej beständiga” funktioner som idag. Det är möjligt att vi kan utveckla vissa anpassad kod för att ta hand om detta för oss som en beräknad kolumn tidsinställt jobb eller schemalagda processen för att komma och uppdatera varje enskilt objekt som måste beräkningen har gjort. Som leder fram till problem med prestanda jag som nämns i det sista stycket genom och dessutom är en sprödbrott lösning som ska vara mycket specifika för webbplatsen / / listkolumnen i fråga. Överst på dessa två frågor också måste du gå hitta en nerdy kille, till exempel själv som vet hur man kod och locka honom att utveckla lösningen åt dig. Men det finns ett enklare sätt!

Om du har behörighet att skapa fält och redigera sidor på webbplatsen men har lite kunskap om XSLT och hur du skapar vyer, kan du sammanställa en XSL-mall som kan ingå i en listvy och troget beräknar ett värde varje gång sidan begärs. Det här scenariot tar bort vår rör över prestanda och kräver inte anpassad kod att utvecklas och distribueras via en lösning.

Perfekt. Så hur ska vi göra det?

  1. Skapa eller Välj det fält som ska fungera som vår källa. Det måste vara en datatyp.

  2. Skapa vår fält som ska fungera som en platshållare för värdet som beräknas.

  3. Lägga till båda av dessa fält i en innehållstyp och lägga till den innehållstypen i en lista.

  4. Skapa en vy av den lista som innehåller både käll- och platshållare kolumner.

  5. Överföra XSL-mall till biblioteket format.

  6. Egenskapen ”XSL-länk” för listvywebbdelen via Användargränssnittet.

  7. Genomfört!

Låt oss utforska ett exempel användningsfall och gå igenom implementeringen. Våra kunder vill lägga till en vy av deras huvudlistan som skulle säga åt dem hur lång tid ett visst listobjekt hade sitter vid dess status. Den här listan finns en anpassad webbplats innehåll typ härledd från objektstypen och läggs till i listan. Det redan finns en händelsemottagare på samma plats som beskriver varje gång det statusfältet på listobjekt ändras och sparat dagens datum i en kolumn med namnet ”datum Status ändras”. Den här ledningar är inte obligatoriska och kan utföras med ett datumfält (den precis så händer det här är vår implementeringen men gärna experimentera). Det minsta måste är din källa datum och fältet platshållaren ska finnas beräkningen (Mer information om detta i nästa stycke) läggs till i listan, även om jag föreslår att du använder webbplatskolumner och webbplatsinnehållstyper om du vill återanvända den här lösningen i andra pl ACE på din webbplats.

Har vi våra källa datum som vi kan använda i vår beräkningen mot dagens datum. Nu kan vi skapa en anpassad webbplatskolumn ska användas som en behållare för vår beräknade värde. I det här fallet valde jag att använda en beräknad kolumn eftersom det inte kommer att kunna ändras på den nya eller redigera objekt formulär, men kan väljas ut för att visa i rutan vyer eftersom vi inte vill att användare att ange valfria värden i den här kolumnen. Det kan vara förvirrande om varför det inte visas i vyer, osv.

Nu när vi har vår webbplatskolumn vi lägga till det i vår innehållstyper som ska användas i vår lista. I nästa steg ska behöver vi för att skapa vår vy som senare kan anpassas med våra XSLT. Kontrollera att du har skapat en standardvy som innehåller källkolumnen datum och en ny beräknad kolumn som ska fungera som en platshållare för det beräknade värdet.

Vi nu har allt som vi kommer att kräva för att stödja våra anpassade åldrande rapport. Alla förblir skapar vår XSL-mall, överförs till webbplatsens formatbibliotek och länkas till vår listvy. XSL-mallen kommer vi att använda ska innehålla några normala SharePoint-genererade markeringar för att generera vyn samt vår egen anpassad kod som används för att åsidosätta vissa delar av de här och beräkna vår önskat värde för oss.

Ge kredit där kredit förfaller, XSL-mallar för att göra de faktiska beräkningar som jag använder för den här lösningen graciously tillhandahållit ”swirch” på MSDN-forum:
http://social.msdn.microsoft.com/Forums/en-US/ sharepointcustomization/tråd/aeda905b-9bc6-40c4-bd22-21306c5cb0d2 /

Hämta den XSL-formatmall (aging.zip) jag placera tillsammans finns här:
https://OneDrive.live.com/?cid=c262e8e2d59a86d9&permissionsChanged=1&id=C262E8E2D59A86D9! 104

Öppna det i dina Favoriter textredigerare visas gott om normal SharePoint XSL-kod för att återge vyer, om du rulla ned till raden 357 start av anpassade mallar som jag har lagt till markeringarna visas måste den första fas som ”DatumDiff” temp sent följt av ”beräkna juliansk-dagars” och ”FieldRef_printTableCell_EcbAllowed.Days_x0020_At_x0020_Status”. Det här är vår tre mallar som gör visas vår beräkningar i vår vyer. Om du kommer att använda olika fältnamn än vad som angetts tidigare i den här artikeln måste du gå igenom de här mallarna och Ersätt alla referenser till andra namn. Kom ihåg att här du ska använda det interna namnet på fältet inte visningsnamn.

När du är nöjd att mallen är redo att gå, gå till din formatbibliotek och ladda upp den under mappen ”XSL-formatmallar” och sedan kopiera ned länken till filen. Det här innebär att vi kan enkelt göra ändringar i den senare eller lägga till det i olika delar av webbplatsen som vi, tack.

Sedan går du till listan och välj den vy som du skapade tidigare i den här artikeln. På ”Webbplatsåtgärder”-menyn klickar du på ”Redigera sida”.

Kommandot Redigera sida på menyn Webbplatsåtgärder

Hitta din listvywebbdelen på sidan och öppna menyn webbdel genom att klicka på den lilla nedåtriktade pilen i det övre högra hörnet. Välj ”Redigera webbdel” i den här menyn.

Kommandot Redigera Webbdel på menyn Webbdel

Då öppnas upp webbdelsmenyn på till höger i webbläsarfönstret.

Webbdelsmeny

Klicka på + för ”diverse” avsnitt och leta reda på ”XSL-länkegenskap”.

XSL-länkegenskap på menyn Webbdel

Klistra in länk till XSL-filen i biblioteket format som du tidigare kopierade nedåt (det kan vara en relativ eller absolut länk).

XSL-fillänk klistras in

Klicka på ”OK” om du vill spara ändringarna och klicka sedan på knappen ”Avsluta redigering” i ”sidan” menyfliksområdet längst upp på sidan.

Knappen Sluta redigera på fliken Sida

Du bör nu se talen i kolumnen ”dagar med Status” om allt är korrekt konfigurerad.

Talvisning i kolumnen för dagar med status

Och slutligen här är vad det skulle se ut med några testa data med olika datum:

Äldre rapport som visar testdata

Sammanfattning:

Det finns: ett snyggt formaterat, robust och bättre prestanda sätt att skapa en åldrande rapport i SharePoint. slutföra med en enkel inte kräver kod implementering. Det här har ganska några möjliga program förutom det användningsfall vi arbetat här. Ett annat vanligt scenario för den här typen av rapporten bifogas till en aktivitetslista så att du kan se hur lång tid som har gått sedan en aktivitet har skapats i korthet.

Njut av!

--Justin

Justin Joyce LANtek

Kommentarer

Stegvisa instruktioner för hur saknas
2012-10-8 3:51 AM
ok jag följt anvisningarna, men det måste finnas någonting saknas - hur XSL vet vilka datum som ska användas eller där fältet för att lägga till dagar sedan till? står det när stegen missat.

Inte kräver kod samtyckt!
2012-8-30 12:12:00
jag accepterar – inte jag tror det verkligen räknas som ”ingen kod”.
Interestingly, via vissa screwup av SharePoint jag har en beräknad kolumn för arbeta med idag... vet du inte hur och varför eftersom jag inte kan få den om du vill göra det igen, men det är fortfarande finns och är arbetstid.

Formel för ”dagar statusen” beräknad kolumn?
5/2/2012 7:39 FM
Justin - vad är den formel som används för din beräknade webbplatskolumn (platshållarkolumn) för ”dagar med Status”? Var det ”= idag”?

SharePoint 2007
2-12-2011 11:29 FM
för närvarande jag har inte försökt att använda den här lösningen för SharePoint 2007, men jag letar den. Det finns tyvärr ingen XslLink egenskap fört ska vi gå i webbdelen i användargränssnittet.

Bra inlägg
11/30/2011 9:53 FM
Hej,
bra inlägg.
jag använder SharePoint 2007.
jag inte har ett diverse avsnitt som ovan.
Måste du ha steg för en SP2007 konfiguration?
Tack.

SV: Inte kräver kod lösning: Visar dagarna sedan ett SharePoint-listobjekt senast ändrades
2011-10-11 8:24:00
Hi Chris.
bra Sök!
i tänker ta en titt på vad du publicerat hopefully vid ett senare tillfälle idag och se om i kan ringa upp den här lösningen lite mer robust.
i är glad du gillar inlägget och jag är mycket glad du kunde hitta en lösning till Europeiska datumformat. :)
-Justin

Lösning för Europeiska datum formaterar
2011-10-11 6:45 FM
Hi igen Justin
Obs, jag hitta en lösning på problemet jag tidigare nämnts på den här sidan.
https://sharepointbydummies.wordpress.com/2011/07/13/possible-work-around-to-date-format-issue-sharepoint-2010/

Europeiska datum formaterar
2011-10-7 3:59 AM
Hi Justin
det här är ett riktigt bra lösning Tack och bara sortera av visade jag har ägnat åt de senaste två dagarna letar du efter! Men jag har lite problem med det och jag hoppas ni kan hjälpa mig.
jag har ändrat din kod lite calcultate antalet dagar tills något händer, snarare än eftersom, genom att växla variabler i den sista raden i funktionen ”DatumDiff”;

< xsl: value-of select = ”$JulianToday - $JulianStartDate” >< / xsl: value-av >

men jag kan endast få jobbet till caclulate skillnaden korrekt halvan av tiden. Så till exempel med detta datum (formatet dd/MM/ÅÅÅÅ);

30-12-2011

beräknas korrekt, men med det här datumet (samma format)

10-12-2011

beräknas som om om 2011-10-Dec snarare än Oct-12-2011.
jag försökte bara byta placeringarna av dag och månad värdena i variabeln ”JulianStartDate”.

< xsl: med parameter name = ”månad” select="substring(ddwrt:FormatDateTime(string($StartDate), 1033,” ÅÅÅÅMMDD ”), 7, 2)” / >
< xsl: med parameter name = ”dag” Välj = ”understräng (ddwrt:FormatDateTime (sträng ($ StartDate), 1033, ”ÅÅÅÅMMDD”); 5; 2) ”/ >

och detta korrigeras problemet med andra datum, men var det felaktiga för det första datumet!
jag försökte också ändra FormatDateTime samtal ska användas Europeiska LCID och olika ändringar till den sista parametern i FormatDateTime (till exempel ddMMyyyy, MMddyyyy) med lämpliga justeringar till understrängen namngivna parametrar utan lyckade.
Gärna avsevärt några råd kan du erbjuda.
Tack,
Chris

Inte kräver kod
9/21/2011 4:27 FM
jag inte tycker att XSL räknas som en ”inte kräver kod” lösning som förstå XSL-språket inte är för alla - men det inte omfattar programmering. Förutom som: bra lösning, tack!

Utöka dina Office-kunskaper
Utforska utbildning
Få nya funktioner först
Anslut till Office Insiders

Hade du nytta av den här informationen?

Tack för din feedback!

Tack för din feedback! Det låter som att det kan vara bra att koppla dig till en av våra Office-supportrepresentanter.

×