Rješenje bez koda: prikaz dana otkad je stavka popisa Zadnja Promjena
Applies To
SharePoint u sustavu Microsoft 365 SharePoint u sustavu Microsoft 365 Small Businessby Justin Joyce, LANtek
Napomena: Ovaj je članak dio zbirke postova od četiri godine s krajnjim korisnicima sustava SharePoint.
Pregled: prilagođena izvješća o dospijeću bez koda
Jedan od često zatraženih funkcionalnih dijelova web-mjesta sustava SharePoint jest izvješće o dospijeću u slučaju zadataka ili stavki popisa. Drugim riječima, koliko je dana/mjeseci prošlo otkad je ta stavka popisa Posljednja izmijenjena?
Na površini izgleda da je to vrlo jednostavan zahtjev. Nakon svega, imamo datume za stvaranje i izmjenu stavki, imamo mogućnost spremanja prilagođenih datuma kada se određene promjene stavki odvijaju putem prijemnika događaja. Izračunali smo stupce u kojima možemo uvrstiti formule nalik na Excel radi korištenja naših informacija. Ovo izgleda kao prilično direktan prijedlog. Biramo polje datuma, stvaramo izračunati stupac, a zatim učinite nešto u formuli duž redaka [DateField] – [danas]. Ah, ne tako brzo ipak! Budući da svi koji su pokušali ovaj "jednostavan" zadatak znaju, pokušavajući koristiti nešto kao što je [danas] u izračunatom stupcu uzrokuju probleme. Ako pokušate umetnuti [danas] u okvir formule izračunatog stupca, prikazat će vam se poruka o pogrešci nešto ovako:
Zašto je ovo? Pa, to ima veze s načinom izračuna izračunatih stupaca.
Uzmimo jednostavnu formulu kao primjer:
= If ([, na kojojje <= [Stupac2]; "u redu"; "nije u redu")
Sve to kaže da ako je, ako je da je. Ovo je prilično tipična osnovna formula za izračunati stupac i čini osnovnu pretpostavku o stavci popisa koja sadrži te stupce: vrijednosti za, a i Stupac2 se nikad neće moći promijeniti bez događaja ažuriranja na stavci popisa.
To je točno, izračunati stupci će se ponovno izračunati samo kada se popis ažurira (ili stvara) Budući da pretpostavljaju da su podaci koje izračunate sadržani u samoj stavci. Time se stvara problem kada pokušavate koristiti nešto što mijenja neovisno o poljima stavke, kao što je današnji datum.
Sada nisam bio na sastanku gdje su odlučili da je to način na koji će izračunati stupci funkcionirati, međutim, ako sam morao učiniti obrazovani Guess bih pretpostaviti da oni funkcioniraju na taj način za performanse. Zamislite da imate popis od nekoliko hiljada stavki, od kojih je svaki sadržavao izračunati stupac za koji je potreban ažuriranje "uživo". To bi značilo da bi neki mehanizmi, možda i zadatak mjerača vremena, morali ponoviti kroz svaku stavku koja je sadržavala taj izračunati stupac svaki tako često i ažurirati njegovu vrijednost. To može biti krajnje oporezivanje u smislu performansi, jer uz veće implementacije ovaj posao može stalno prikazivati i mijenjati stavke. To je samo moja pretpostavka, ali ima dosta smisla ako razmisliš o tome.
Postoje neki prijedlozi za slična rješenja koja se nalaze u blizini koja obuhvaća prevariti SharePoint u prihvaćanju vrijednosti danas po prvom stvaranju stupca naziva danas, a zatim ga dodali u formulu, a zatim ga izbrisati. Sve su to dobro i dobro, ali zapamtite što sam rekao kada se izračunavaju izračunati stupci. Ta će se vrijednost promijeniti samo kada se stavka ažurira, što znači da će vaše vrijednosti uskoro biti netočne, osobito u slučaju izračuna dana.
Vidio sam druge pomoću pametnih JavaScripta za zapisivanje vrijednosti na stranicu. To će funkcionirati i, ali sam uglavnom kategorički protiv skripte klijenta kada ga je moguće izbjeći.
Provedbu
Dakle, što učiniti? Izračunati stupci ne nalaze se u pitanju za takozvane "nestabilne" funkcije kao što je danas. Moguće je da bismo mogli razviti neki prilagođeni kod koji će nam se pobrinuti za ovo, kao što je izračunat stupac, zadatak mjerača vremena ili zakazani postupak koji će doći uz ažuriranje svake stavke koja je potrebna za ovaj izračun. To nas vraća na problem performansi koje sam spomenula u posljednjem odlomku, a dodatno je to krhko rješenje koje bi bilo vrlo specifično za web-mjesto/popis/stupac u pitanju. Povrh te dvije zabrinutosti, morat ćete pronaći i šmokljan, kao što sam ja, koji zna kako kod i uvjeriti ga da razvije ovo rješenje za vas. No, tu je jednostavniji način!
Ako imate prava na stvaranje polja i uređivanje stranica na web-mjestu, a imate malo znanja o XSLT-u i stvaranju prikaza, možete sastavite XSL predložak koji se može uvrstiti u prikaz popisa i vjerno će izračunati vašu vrijednost prilikom svakog zatraženih stranica. Ovaj scenarij uklanja našu zabrinutost zbog performansi i ne zahtijeva da se prilagođeni kôd razvije i implementira putem rješenja.
Savršen. Pa kako ćemo to učiniti?
-
Stvorite ili odaberite polje koje će djelovati kao naš izvor. Mora biti vrsta datuma.
-
Stvorite polje koje će djelovati kao rezervirano mjesto za izračunatu vrijednost.
-
Dodajte oba polja u vrstu sadržaja i dodajte tu vrstu sadržaja na popis.
-
Stvorite prikaz tog popisa koji sadrži stupce izvorišnog i rezerviranog mjesta.
-
Prenesite XSL predložak u biblioteku stilova.
-
Postavite svojstvo "XSL veza" za web-dio prikaza popisa putem korisničkog sučelja.
-
Uspjeh!
Istražite primjer koristi slučaj i prođite kroz implementaciju. Naš je klijent htio prikaz glavnog popisa koji će im reći koliko je dugo stavka popisa bila u svom statusu. Taj je popis sadržavao prilagođenu vrstu sadržaja web-mjesta koja je izvedena iz vrste stavke i dodana na popis. Prijamnik događaja već je u mjestu koji bilježi svaki put kada je polje stanja na stavci popisa promijenjeno i sprema taj datum u stupac pod nazivom "Promjena statusa datuma". Sve ovo ožičenje nije obavezno, i može se obaviti s bilo kojim poljem datuma (to se događa samo tako da je to naša implementacija, ali slobodno Eksperimentirajte). Minimalni minimum koji će vam biti potreban jest polje izvorišnog datuma i polje rezerviranog mjesta da biste u nastavku dodali izračun (više o tome u sljedećem paragrafu), iako predlažem da koristite stupce web-mjesta i vrste sadržaja web-mjesta u slučaju da želite ponovno koristiti ovo rješenje na drugim mjestima na web-mjestu.
Dakle, imamo naš izvorni datum koji možemo koristiti u našem izračunu protiv današnjeg datuma. Sada možemo stvoriti prilagođeni stupac web-mjesta koji će se koristiti kao spremnik za našu izračunatu vrijednost. U ovom slučaju odlučio sam koristiti izračunati stupac budući da se ne može promijeniti na novim ili uređivačkoj stavci stavke, no može se odabrati za prikaz u prikazima jer ne želimo da korisnici u ovaj stupac unose proizvoljne vrijednosti. Može biti zbunjujuće zašto se ne prikazuje u prikazima, itd.
Sada kada imamo stupac web-mjesta, možemo ga dodati u naše vrste sadržaja koje će se koristiti na popisu. Zatim moramo stvoriti naš prikaz koji će se kasnije prilagođavati našim XSLT-om. Provjerite jeste li stvorili standardni prikaz koji sadrži stupac Izvorni Datum i novi izračunati stupac koji će djelovati kao rezervirano mjesto za izračunatu vrijednost.
Sada imamo sve što je na mjestu koje ćemo zahtijevati da podupiramo naše prilagođeno izvješće o starim kategorijama. Sve što ostaje jest stvaranje XSL predloška, prijenos u biblioteku stilova web-mjesta i njihovo povezivanje s prikazom popisa. XSL predložak koji ćemo koristiti bit će sadrži neke normalne oznake generirane u sustavu SharePoint za generiranje prikaza, kao i vlastite prilagođene oznake koje se koriste za nadjačavanje određenih dijelova i izračun željene vrijednosti za nas.
Dajući kredit za zasluge, XSL Predlošci za obavljanje stvarnih izračuna koje koristim za ovo rješenje ljubazno su naveli "swirch" na MSDN forumima: http://Social.MSDN.Microsoft.com/forums/en-US/sharepointcustomization/Thread/aeda905b-9bc6-40c4-bd22-21306c5cb0d2/
Preuzmite XSL stylesheet (aging.zip) koje sam postavio ovdje: https://OneDrive.Live.com/?CID=c262e8e2d59a86d9&dozvola za promjenu = 1&ID = c262e8e2d59a86d9! 104
Otvaranje ovog u omiljenom uređivaču teksta prikazat će vam se obilje uobičajenih SharePoint XSL oznake za renderiranje prikaza, ako nastavite pomicanjem prema dolje na crtu 357 vidjet ćete početak prilagođenih predložaka koje sam dodao u oznaku, prvi je "Data" Template, a zatim "izračun-Julian-Day" i "FieldRef_printTableCell_EcbAllowed. Days_x0020_At_x0020_Status". Ovo su naša tri predložaka koja će stvoriti i prikazati naše proračune u našim prikazima. Ako ćete koristiti različita naziva polja nego što ste prethodno naveli u ovom članku, morat ćete proći kroz te predloške i zamijeniti bilo koju referencu drugim nazivima. Imajte na umu da želite koristiti Interni naziv polja, a ne zaslonski naziv.
Kada budete zadovoljni da je predložak spreman za odlazak, dođite do biblioteke stilova i prenesite ga u mapu "XSL stilovi", a zatim kopirajte vezu na datoteku. To će nam dopustiti da ga kasnije jednostavno promenimo ili da ga dodate na razne dijelove web-mjesta.
Zatim otvorite popis i odaberite prikaz koji ste stvorili ranije u ovom članku. Na izborniku "Akcije web-mjesta" kliknite "Uređivanje stranice".
Na stranici Pronađite web-dio prikaza popisa i otvorite izbornik web-dio tako da kliknete malu strelicu okrenutu prema dolje u gornjem desnom kutu. Na ovom izborniku odaberite "uređivanje web-dijela".
Time ćete otvoriti izbornik web-dijela s desne strane prozora preglednika.
Kliknite gumb + za odjeljak "razno" i pronađite svojstvo "XSL veza".
Zalijepite vezu na XSL datoteku u biblioteci stilova koju ste ranije kopirali (to može biti relativna ili apsolutna veza).
Kliknite "u redu" da biste spremili promjene, a zatim kliknite gumb "Zaustavi uređivanje" na vrpci "stranica" pri vrhu stranice.
Ako je sve ispravno konfigurirano, sada biste trebali vidjeti brojeve u stupcu "dani u statusu".
I na kraju, evo kako bi izgledalo s nekim testnim podacima raznih datuma:
Sažetak:
Tu je: lijepo oblikovan, robustan i bolji način stvaranja izvješća o dospijeću u sustavu SharePoint., uz jednostavnu implementaciju bez koda. To je prilično nekoliko potencijalnih aplikacija osim jednog koristiti slučaj koji smo istražili ovdje. Još jedan uobičajen scenarij za ovu vrstu izvješća prilažu ga na popis zadataka tako da možete vidjeti koliko je dugo došlo od početka stvaranja zadatka.
Uživajte!
--Justin
Justin Joyce, LANtek
Komentari
Nema
koraka 10/8/2012 3:51 AM u redu sam slijedili korake, ali mora biti nešto nema-kako će XSL znati koji datum koristiti, ili koje polje za dodavanje dana od kada je u? Mrzim kada se propusti koraci.Ne-kod, dogovoreno!
8/30/2012 12:12 PM Slažem se – ne mislim da se ovo stvarno računa kao "Nema koda". Zanimljivo je da putem nekih pogrešaka u sustavu SharePoint imam izračunatog stupca koji se danas koristi u radu... Niste sigurni kako ili zašto jer ga ne mogu ponovno učiniti, no ona još uvijek postoji i radi.Formula za izračunati stupac "dani u statusu"?
5/2/2012 7:39 AM Justin-koja je formula koju ste koristili za izračunatog stupca "dani u statusu" (stupac rezerviranog mjesta)? Je li to bilo "= danas"?SharePoint 2007
12/2/2011 11:29 AM Trenutno nisam pokušao primijeniti ovo rješenje na SharePoint 2007, no gledam u njega. Nažalost ne postoji svojstvo XslLink koje se prikazuje na web-dijelu putem korisničkog sučelja.Odličan post
11/30/2011 9:53 AM Pozdrav, Odličan post. Koristim SharePoint 2007. U nastavku nema odjeljka na kojem je navedeno. Imate li korake za konfiguraciju SP2007? Hvala ti.Re: rješenje bez koda: prikaz dana od zadnjeg promjene
stavke popisa sustava SharePoint 10/11/2011 8:24 AM Bok, Chrise. veliko pronalaženje! Pogledat ću što ste objavili, nadamo se kasnije danas i vidjeti mogu li ovo rješenje učiniti malo snažnijom. Drago mi je da vam se svidio post, i drago mi je da ste uspjeli pronaći rješenje za Europski oblik datuma. :) -JustinRješenje za europske oblike https://sharepointbydummies.WordPress.com/2011/07/13/possible-work-around-to-date-format-Issue-SharePoint-2010/
datuma 10/11/2011 6:45 AM Hi Again Justin, FYI, otkrio sam rješenje za problem koji sam prethodno spomenuo na ovoj stranici;Europski oblici
datuma 10/7/2011 3:59 AM Hi Justin, Ovo je stvarno dobro rješenje Hvala, i samo vrsta stvari koje sam proveo posljednja dva dana u potrazi za! Pa ipak im ' vlasništvo zalogaj od problem sa Internet i sam bio nadajući te mogao pomoć mene. Neznatno sam izmijenio vaš kod da biste označili broj dana dok se nešto ne dogodi, nego od tada, promjenom varijabli u posljednjem retku funkcije "DateDiff"; <xsl: Value-od Select = "$JulianToday-$JulianStartDate" ></xsl: vrijednost-od> Pa ipak im ' jedini u mogućnosti da biste dobili Internet to caclulate razlika korektno pola od vrijeme. Dakle, na primjer s ovim datumom (oblikovanje DD/MM/yyyy); 30/12/2011 Pravilno izračunava, ali s ovim datumom (istim oblikom) 12/10/2011 Izračunava se kao da je 10-Dec-2011, a ne 12-Oct-2011. Pokušala sam jednostavno prebaciti pozicije vrijednosti dana i mjeseca u varijablu "JulianStartDate", kao što je ova; <xsl: with-param name = "month" odaberite = "substring (ddwrt: FormatDateTime (niz ($StartDate), 1033, ' yyyyMMdd '), 7, 2)"/> <xsl: with-param name = "dan" odaberite = "substring (ddwrt: FormatDateTime (niz ($StartDate), 1033, ' yyyyMMdd '), 5, 2)"/> I to je ispravilo problem s drugim datumom, no nakon prvog datuma nije bilo korektno! Pokušao sam i promijeniti značajke FormatDateTime za korištenje europskih lcids i raznih promjena u posljednjem parametru programa FormatDateTime (e.g. ddmmyyyy, mmddyyyy) uz adekvatne prilagodbe pozicionalnih parametara podniz bez uspjeha. Vrlo bih cijenio svaki savjet koji možete ponuditi. Hvala, ChrisNo-code
9/21/2011 4:27 AM Ne mislim da se XSL kvalificira kao rješenje "ne-kod", kao što je razumijevanje XSL jezika nije za sve – no ne uključuje programiranje. Osim toga: lijepo rješenje, hvala!