Rešitev brez kode: prikazovanje dni, odkar je bil element seznama zadnjič spremenjen
Applies To
SharePoint v okolju Microsoft 365 SharePoint v okolju Microsoft 365 Small Businesski ga je napisala Justin Joyce, LANtek
Opomba: Ta članek je del zbirke objav iz štirih let, ko dobite točkovni spletni dnevnik za končne uporabnike SharePoint.
Pregled: poročila o staranju po meri brez kode
Eden od pogosto zahtevanih funkcionalnih delov SharePointovega mesta je poročilo o staranju za opravila ali elemente seznama. Z drugimi besedami, koliko dni/mesecev je bilo od zadnjega spreminjanja tega elementa seznama?
Na površini se zdi to zelo preprosta zahteva. Na voljo so datumi za ustvarjanje in spreminjanje elementov, ki jih lahko shranite, ko se nekatere spremembe elementov izvedejo prek sprejemnikov dogodkov. Izračunali smo stolpce, v katerih lahko vključite Excelove podobne formule za delo z našimi informacijami. To se zdi kot zelo naravnost naprej predlog. Izberemo polje» Datum «, ustvarite izračunani stolpec in nato naredite formulo nekaj po vrsticah [DateField] – [danes]. Ah, ne tako hitro, čeprav! Kot vsak, ki je poskusil to preprosto opravilo, ve, kako poskušajo uporabiti nekaj podobnega [danes] v izračunanem stolpcu povzroča težave. Poskusite vstaviti [danes] v polje s formulo izračunanega stolpca prikaže sporočilo o napaki, podobno temu:
Zakaj je to? To mora opraviti s načinom izračunavanja izračunanih stolpcev.
Vzemimo preprosto formulo kot primer:
= IF ( [Stolpec1] <= [stolpec2], "v redu", "ni v redu")
Vse to pravi, da če je Stolpec1 manjša ali enaka Stolpec2, nato Prikaži v redu, sicer prikaz ni v redu. To je dokaj tipična osnovna formula za izračunani stolpec in ustvari osnovno predpostavko o elementu seznama, ki vsebuje te stolpce: vrednosti za Stolpec1 in Stolpec2 ne bodo nikoli mogle spremeniti brez dogodka posodobitve na elementu seznama.
To je pravilno, izračunani stolpci bodo preračunani le, ko bo seznam posodobljen (ali ustvarjen), ker predvidevajo, da so informacije, ki jih izračunavate, vsebovane v elementu samega. S tem ustvarite težavo, ko poskušate uporabiti nekaj, kar spreminja neodvisne od polj elementa, kot je današnji datum.
Zdaj me ni bilo na srečanju, kjer so se odločili, da je to način, da bi izračunani stolpci delovali, vendar če bi moral narediti izobražen ugibati, bi predvideval, da delujejo na ta način za učinkovitost delovanja. Predstavljajte si, če ste imeli seznam več tisoč elementov, od katerih je vsak vseboval izračunani stolpec, ki je potreboval posodobitev» v živo «. To pomeni, da bi morali nekateri mehanizmi, morda s poslom razporejevalnika, ponoviti vsak element, ki je vseboval ta izračunan stolpec, in posodobiti njeno vrednost. To je lahko zelo obdavčenje glede na učinkovitost delovanja, saj se lahko z večjimi uvajanjemi to delo nenehno izvaja in spreminja stvari. To je le moje ugibanje, ampak to je zelo malo smiselno, če pomislite na to.
Obstaja nekaj predlogov za podobne rešitve, ki plavajo okoli tam, ki vključujejo tricking SharePoint, da sprejmete današnjo vrednost tako, da najprej ustvarite stolpec z imenom danes, nato pa ga dodate v formulo, nato pa jo izbrišete. Vse to je dobro in dobro, vendar ne pozabite, kaj sem rekel o tem, kdaj se izračunani stolpci posodobijo. Ta vrednost se spremeni le, ko je element posodobljen, kar pomeni, da bodo vaše vrednosti kmalu nepravilne, zlasti v primeru izračuna dneva.
Ive ' seen drugi using spreten JavaScript pisati vrednost v stran. To bi delovalo tudi, vendar sem precej kategorično proti stranki Script, ko se lahko izognete.
Izvedba
Kaj storiti? Izračunani stolpci niso v vprašanju za tako imenovane» hlapne «funkcije, kot je danes. Možno je, da lahko razvijemo nekaj kode po meri, da poskrbimo za to za nas, kot je izračunani stolpec, posel razporejevalnika ali načrtovan postopek in posodobite vsak posamezen element, ki potrebuje ta izračun. To nas pripelje do težave z učinkovitostjo delovanja, ki sem jo omenil v zadnjem odstavku, čeprav je to krhka rešitev, ki bi bila zelo specifična za mesto/seznam/stolpec. Na vrhu teh dveh pomislekov, bi morali iti poiskati nerdy fant, kot sem jaz, ki ve, kako kodo in ga prepričati, da razvije to rešitev za vas. Vendar pa obstaja lažja pot!
Če imate pravice za ustvarjanje polj in urejanje strani na spletnem mestu ter poznavanje XSLT in ustvarjanje pogledov, lahko ustvarite predlogo XSL, ki jo je mogoče vključiti v pogled seznama, in bo zvesto izračunala vašo vrednost vsakič, ko bo stran zahtevana. Ta scenarij odstrani našo zaskrbljenost nad učinkovitostjo delovanja in ne zahteva, da se koda po meri razvije in uvede prek rešitve.
Popoln. Kako to naredimo?
-
Ustvarite ali izberite polje, ki bo delovalo kot naš vir. Mora biti vrsta datuma.
-
Ustvarite polje, ki bo delovalo kot označba mesta za vrednost, ki je izračunana.
-
Dodajte obe polji v vrsto vsebine in dodajte to vrsto vsebine na seznam.
-
Ustvarite pogled seznama, ki vsebuje stolpce» vir «in» označba mesta «.
-
Prenesite predlogo XSL v knjižnico slogov.
-
Nastavite lastnost» povezava XSL «za spletni gradnik pogleda seznama prek uporabniškega vmesnika.
-
Uspeha!
Raziščimo primer uporabe in sprehod po izvajanju. Naša stranka je želela pogled na svoj glavni seznam, ki bi jim povedal, kako dolgo je bil določen element seznama sedel na njeno stanje. Na tem seznamu je vrsta vsebine mesta po meri, ki je izpeljana iz vrste elementa in dodana na seznam. Sprejemnik dogodkov je bil že na mestu, ki zajame vsakokrat, ko je bilo polje» stanje «na elementu seznama spremenjeno in shranjeno v stolpcu» spremenjeno stanje datuma «. Vse to ožičenje ni zahtevano in ga je mogoče narediti s katerim koli poljem z datumom (to se zgodi le, če je to naše izvajanje, vendar vas prosimo, da eksperimentirate). Najmanjša minimalna vrednost, ki jo potrebujete, je polje» datum vira «in polja» označba mesta «, da zadržite izračun (več o tem v naslednjem odstavku), ki ste ga dodali na seznam, čeprav vam predlagam, da uporabite stolpce mesta in vrste vsebine mest, če želite to rešitev znova uporabiti na drugih mestih na mestu.
Torej imamo izvorni datum, ki ga lahko uporabimo v našem izračunu glede na današnji datum. Zdaj lahko ustvarite stolpec mesta po meri, ki ga želite uporabiti kot vsebnik za našo izračunano vrednost. V tem primeru sem se odločil uporabiti izračunani stolpec, ker ga ne bo mogoče spremeniti v obrazcih» novo «ali» urejanje elementa «, vendar ga je mogoče izbrati za prikaz v pogledih, ker ne želimo, da bi uporabniki vnašali poljubne vrednosti v ta stolpec. Lahko je zavajajoče, zakaj se ne prikaže v pogledih itd.
Zdaj, ko imamo stolpec mesta, ga lahko dodate na naše vrste vsebine, ki bodo uporabljene na našem seznamu. Nato moramo ustvariti naš pogled, ki bo pozneje prilagojen našemu XSLT-ju. Prepričajte se, da ste ustvarili standardni pogled, ki vsebuje stolpec» datum vira «in nov izračunani stolpec, ki bo deloval kot označba mesta za izračunano vrednost.
Zdaj imamo vse, kar je na voljo, da bomo morali podpirati naše poročilo o staranju po meri. Vse, kar ostane, je ustvarjanje naše predloge XSL, ki jo lahko prenesete v knjižnico slogov mesta in jo povežete z našim pogledom seznama. Predloga XSL, ki jo bomo uporabili, bo vsebovala nekaj običajnih SharePointovih nastalih oznak za ustvarjanje pogleda in lastnih oznak po meri, ki se uporabljajo za preglasitev določenih delov tega mesta in izračun želene vrednosti za nas.
Dajanje kreditov, pri katerih zapade kredit, so XSL predloge za opravljanje dejanskih izračunov, ki jih uporabljam za to rešitev, prijazno navedla» swirch «na forumih MSDN: http://Social.MSDN.Microsoft.com/forums/en-us/sharepointcustomization/Thread/aeda905b-9bc6-40c4-bd22-21306c5cb0d2/
Prenesite XSL Stylesheet (aging.zip), ki sem jih sestavil tukaj: https://OneDrive.Live.com/?Cid=c262e8e2d59a86d9&permissionsChanged = 1&ID = c262e8e2d59a86d9! 104
Če želite odpreti to v vašem priljubljenem urejevalniku besedila, boste videli veliko navadnih SharePointovih XSL oznak za upodabljanje pogledov, če se boste še naprej pomikali navzdol do vrstice 357, boste videli začetek predlog po meri, ki sem jih dodal v oznako, prva pa je» DateDiff «, ki ji sledi» Izračunaj-Julian-Day «in» FieldRef_printTableCell_EcbAllowed. Days_x0020_At_x0020_Status «. To so naše tri predloge, ki bodo izračunali in prikazovali naše izračune v naših pogledih. Če želite uporabiti različna imena polj, kot so bila določena prej v tem članku, boste morali pregledati te predloge in zamenjati vse sklice na druga imena. Zapomnite si, za to boste želeli uporabiti notranje ime polja, ki ni prikazano ime.
Ko ste prepričani, da je predloga pripravljena za odhod, se pomaknite do knjižnice slogov in jo prenesite v mapo» XSL Style Sheets «in kopirajte povezavo do datoteke. To nam omogoča, da ga pozneje preprosto spremenite ali pa ga dodate na različne dele spletnega mesta, kot smo vas prosimo.
Nato pojdite na seznam in izberite pogled, ki ste ga ustvarili prej v tem članku. V meniju» Dejanja mesta «kliknite» Uredi stran «.
Spletni gradnik pogleda seznama najdete na strani in odprite meni spletnega gradnika tako, da kliknete puščico navzdol, obrnjeno navzdol, v zgornjem desnem kotu. V tem meniju izberite» Uredi spletni gradnik «.
S tem boste odprli meni spletnega gradnika na desni strani okna brskalnika.
Kliknite v razdelku + za razdelek» Razno «in poiščite lastnost» povezava XSL «.
Prilepite povezavo do datoteke XSL v knjižnici slogov, ki ste jo prej kopirali (to je lahko relativna ali absolutna povezava).
Kliknite» v redu «, če želite shraniti spremembe, nato kliknite gumb» Ustavi urejanje «na traku» Page «na vrhu strani.
Če je bilo vse pravilno konfigurirano, morate zdaj videti številke v stolpcu» dnevi v stanju «.
In na koncu, tukaj je, kako bi bilo videti z nekaj podatkov test različnih datumov:
Povzetek:
Na voljo je: lepo oblikovana, robustna in uspešnejša pot za ustvarjanje poročila o staranju v SharePointu. To je kar nekaj možnih aplikacij, ki so na voljo v eni zadevi za uporabo, ki smo jo raziskali tukaj. Drug pogost primer za to vrsto poročila je, da ga priložite na seznam opravil, tako da si lahko ogledate, kako dolgo je že bilo opravilo ustvarjeno na prvi pogled.
Uživajte!
--Justin
Justin Joyce, LANtek
Pripombe
Manjkajo
koraki 10/8/2012 3:51 AM v redu, sledil sem korakom, vendar mora biti nekaj manjkalo – kako bo XSL vedel, kateri datum naj uporabi ali polje za dodajanje dni od začetka? Sovražim, ko so koraki zamujeni.Brez kode, dogovorjeno!
8/30/2012 12:12 PM Strinjam se, da to ne šteje kot» brez kode «. Zanimivo je, da s pomočjo nekaterih nečesa SharePoint, imam delovni izračunani stolpec z uporabo danes... ne veste, kako ali zakaj, ker ne morem dobiti, da to storite znova, vendar je ena je še vedno tam in deluje.Formula za» dneve na stanje «izračunanega stolpca?
5/2/2012 7:39 AM Justin – Kakšna je formula, ki ste jo uporabili za» dneve na stanje «izračunanega stolpca mesta (stolpec z označbo)? Je bil» = Today «?SharePoint 2007
12/2/2011 11:29 AM Trenutno nisem poskušal uporabiti te rešitve v programu SharePoint 2007, vendar ga Iščem. Na žalost ne obstaja nobena lastnost XslLink na spletnem gradniku prek uporabniškega vmesnika.Velika objava
11/30/2011 9:53 AM Pozdravljeni, Velika objava. Uporabljam SharePoint 2007. Nimam razdelka» Razno «, kot je navedeno zgoraj. Ali imate navodila za konfiguracijo SP2007? hvala.Re: rešitev brez kode: prikaz dni, ko je bil element SharePointovega seznama zadnjič spremenjen
10/11/2011 8:24 AM Halo sveto olje. velik odkriti! pogledala bom, kaj ste objavili, upajmo, da boste pozneje na današnji dan in videli, ali lahko to rešitev malo bolj robustno. Vesel sem, da vam je bila všeč objava, in zelo sem vesel, da ste lahko našli rešitev za Evropsko obliko datuma. :) -JustinRešitev za evropske oblike zapisa 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, našla sem rešitev za težavo, ki sem jo že omenil na tej strani;Evropske oblike zapisa
datuma 10/7/2011 3:59 AM Hi Justin, To je res dobra rešitev, hvala, in ravno take stvari, ki sem jih porabil zadnja dva dneva, ki iščejo! Vendar pa imam težave z njo in Upala sem, da mi lahko pomagate. Nekoliko sem spremenil kodo, da calcultate število dni, dokler se ne zgodi nekaj od tega, in sicer tako, da zamenjate spremenljivke v zadnji vrstici funkcije» DateDiff «; <xsl: Value-of Select = "$JulianToday-$JulianStartDate" ></xsl: Value-of> Vendar sem lahko le, da se caclulate razliko pravilno polovico časa. Tako na primer s tem datumom (oblika DD/MM/LLLL); 30/12/2011 Pravilno izračuna, vendar s tem datumom (ista oblika) 12/10/2011 Izračuna se, kot če bi 10-Dec-2011 namesto 12-Oct-2011. Poskušal sem preprosto preklopiti položaje vrednosti» dan «in» mesec «v spremenljivki» JulianStartDate «, kot je ta; <xsl: with-para ime = "mesec" SELECT = "podniz (ddwrt: FormatDateTime (string ($StartDate), 1033," yyyyMMdd "), 7, 2)"/> <xsl: with-para ime = "dan" SELECT = "podniz (ddwrt: FormatDateTime (string ($StartDate), 1033," yyyyMMdd "), 5, 2)"/> In to je odpravila težavo z drugim datumom, vendar je bila nato nepravilna za prvi datum! Poskušal sem tudi spremeniti FormatDateTime klice, da bi uporabili Evropske LCID-je in različne spremembe zadnjega parametra FormatDateTime (npr. ddMMyyyy, MMddyyyy) z ustreznimi prilagoditvami za podnizovne pozicijske parametre brez uspeha. Zelo cenim vse nasvete, ki jih lahko ponudite. Hvala, ChrisBrez kode
9/21/2011 4:27 AM Ne verjamem, da se XSL kvalificira kot rešitev» brez kode «kot razumevanje jezika XSL ni za vse – vendar ne vključuje programiranja. Sicer to: fin raztopina, the same!