Soluție nu necesită cod: afișarea în zile, deoarece un element de listă SharePoint s-a modificat ultima

Soluție nu necesită cod: afișarea în zile, deoarece un element de listă SharePoint s-a modificat ultima

Important : Acest articol este tradus automat, consultați exonerarea de răspundere. Versiunea în limba engleză a acestui articol se poate găsi aici pentru referință.

9/20/2011 3:01 PM

scrise de Justin, LANtek

Notă : Acest articol face parte dintr-o colecție de mesaje din patru ani de blog Obțineți punctul pentru utilizatorii finali SharePoint.

Prezentare generală: Particularizată imbatranire de rapoarte cu fără cod

Unul dintre piese funcțională des solicitate de un site SharePoint este un raport vechi pentru activități sau elemente de listă. Cu alte cuvinte, cât de multe zile/luni acesta a fost, deoarece acest element de listă s-a modificat ultima dată?

Pe suprafața de aceasta pare să fie o solicitare foarte simplu. După toate, avem datele pentru elemente se creează și modificată, avem capacitatea de a stoca date particularizate când anumite modificări la elemente au loc prin receptori pentru eveniment. Am calculat coloane în cazul în care vă pot include formule Excel, cum ar fi să funcționeze cu nostru informații. Acest lucru pare ca o propunere destul de drept înainte. Am alegeți un câmp dată, a crea o coloană calculată și apoi alegeți o formulă ceva de-a lungul liniilor de [DateField]-[astăzi]. Ah, nu atât de rapid dacă! Ca toți cei care a încercat această activitate "simplu" să știe, încercați să utilizați ceva de genul [astăzi] într-o coloană calculată cauzează probleme. Încercați să inserați [astăzi] în vă calculate caseta formulă coloană pe vă va oferi un mesaj de eroare ceva de genul acesta:

Mesaj de eroare

Ce este aceasta? Bine, acesta trebuie să fac cu așa cum calculează coloanele sunt calculate.

Să aruncăm o formulă simplă ca un exemplu:

= IF ( [coloanelor Column1] < = [Column2], "OK", "Nu este OK")

Toate acestea, spune este care dacă coloana1 este mai mică sau egală cu Column2, apoi Afișați OK, în caz contrar, afișează nu este OK. Aceasta este o formulă obișnuită destul de bază pentru o coloană calculată și creează o presupunerea de bază despre elementul din listă care conține aceste coloane: valorile pentru coloana1 și Column2 nu vor putea să modificați fără un eveniment de actualizare pe elementul din listă.

Care este potrivită, coloanele calculate va recalcularea doar atunci când lista este actualizat (sau creat) deoarece acestea presupun informațiile sunt calculul sunt incluse în elementul propriu-zisă. Acest lucru creează o problemă atunci când încercați să utilizați un element care se modifică independent de câmpuri element, cum ar fi data de astăzi.

Acum să nu a fost în întâlnire în cazul în care au decis că acesta este modul în care calculează coloanele ar funcționa, cu toate acestea, dacă am pentru a face o estimare educat ar presupun că acestea funcția acest mod pentru performanțe. Imaginați-vă dacă ați avut o listă cu mai multe elemente mii, fiecare dintre care conținute de o coloană calculată care este necesar o actualizare "live". Care înseamnă că unele mecanism, poate că o cronometrare, ar trebui să lucrăm la fiecare element care conținute fiecare atât de des acea coloană calculată și se actualizează valoarea sa. Acest lucru poate fi impoziteze extrem ceea ce privește performanța, deoarece cu mai mare implementări această activitate constant poate fi rulează și modificarea lucruri. Care este doar meu estimare, dar acest lucru este puțin util dacă vă gândiți.

Există câteva sugestii pentru soluții similare flotante în jurul acolo care implică pacalind SharePoint pentru a accepta o valoare de astăzi, mai întâi, creați o coloană numită astăzi, apoi adăugându-l la formula, apoi să-l șterge. Acestea sunt toate bune, dar Rețineți ceea ce am spus despre atunci când se actualizează coloane calculate. Această valoare se va schimba doar atunci când elementul este actualizat, ceea ce înseamnă că valorile de curând va fi incorecte, mai ales în cazul unui calcul zi.

L-ați văzut alte persoane utilizând inteligent JavaScript pentru a scrie valorile la pagină. Acest lucru va funcționa, de asemenea, dar sunt destul de mult categoric împotriva script de client atunci când îl poate evita.

Implementarea:

Așadar, ce se poate face? Coloanele calculate sunt din cauză pentru atât denumite funcții "volatile", cum ar fi data de astăzi. Este posibil ca am putea dezvolta unele cod particularizate pentru a se îngrijească de acest lucru pentru noi, cum ar fi o coloană calculată, cronometrare, sau programat procesul de vină-a lungul și se actualizează fiecare element unic care necesită acest calcul efectuate. Care ne aduce înapoi la problema de performanță pot menționate în ultimul paragraf dacă și în plus este o soluție casant care ar fi foarte specifice pentru site-ul/listă/coloana respectivă. În partea de sus aceste două probleme, va trebui, de asemenea, pentru a accesa Găsiți un tip nerdy, cum ar fi personal, care să știe cum să codul și să-l pentru a dezvolta această soluție pentru a vă convinge. Dar există o modalitate mai ușor!

Dacă aveți drepturi de crearea câmpurilor și editarea paginilor de pe site-ul și au un pic de cunoștințe despre XSLT și crearea vizualizărilor, se poate pune împreună un șablon XSL care pot fi incluse într-o vizualizare de listă și cu fidelitate va calcula valoarea de fiecare dată când se solicită paginii. Acest scenariu elimină nostru interes asupra performanței și nu necesită cod particularizate pentru a fi dezvoltat și implementat printr-o soluție.

Perfectă. Deci cum facem aceasta?

  1. Creați sau Selectați câmpul care va avea rolul nostru sursă. Acesta trebuie să fie un tip de date.

  2. Creați noastre câmp care va comportă ca un substituent pentru valoarea este calculată.

  3. Adăugați ambele dintre aceste câmpuri la un conținut tastați și adăuga acel tip de conținut într-o listă.

  4. Crearea unei vizualizări din acea listă care conține atât sursă, cât și substituent coloane.

  5. Încărcați XSL șablonul în biblioteca de stiluri.

  6. Setați proprietatea "XSL Link" pentru partea Web vizualizare listă la interfața utilizator.

  7. Succes!

Să explorați un exemplu caz de utilizare și să parcurgeți implementarea. Clientul nostru dorit o vizualizare a lista lor principale de care să spuneți-le durata unui element din lista anumite au fost află la starea sa. Această listă conținute un site personalizat conținut tipul derivat din tipul de element și adăugat la listă. A fost deja un receptor eveniment în locul care conține de fiecare dată când acel câmp de stare în elementul de listă s-a modificat și salvat acea dată într-o coloană numită "Date a schimbat starea". Toate acest cabluri nu este necesar, și se poate face cu orice câmp dată (doar atât se întâmplă acest lucru este implementarea nostru, dar vă liber pentru a experimenta). Minim goale, veți avea nevoie este de câmpul de date sursă și câmpul substituent să mențineți de calcul (mai multe informații despre aceasta în paragraful următor) adăugat la listă, deși am sugera utilizați coloane de site și tipuri de conținut de site în cazul în care doriți să reutilizați această soluție în alte locuri de pe site-ul dvs.

Deci avem noastre data sursă care vă puteți utiliza în calcul noastre împotriva data de astăzi. Acum putem crea o coloană de site particularizat de utilizat ca un container pentru noastre valoare calculată. În acest caz, am ales să utilizați o coloană calculată, deoarece aceasta nu va putea să fi modificate pe noi sau să editați formularele elemente, dar pot fi selectate pentru afișarea în vizualizările, deoarece nu dorim utilizatorilor introducerea arbitrare valorile din această coloană. Ar putea fi confuz cu privire la ce acesta nu este se afișează în vizualizări, etc.

Acum, că avem noastre coloane de site, vă puteți adăuga la noastre tipurile de conținut care vor fi utilizate în lista. În continuare, trebuie să creați nostru vizualizare care va fi personalizat ulterior cu nostru XSLT. Asigurați-vă creați o vizualizare standard, care conține de coloană sursă de date și de coloană calculată nouă care va comportă ca un substituent pentru valoare calculată.

Avem acum totul în locul care vă va necesita pentru a accepta nostru raport particularizat vechi. Tot ce rămâne este de a crea nostru șablon XSL, încărcați-l la biblioteca de stiluri pe site-ul și leagă de nostru vizualizarea listă. Șablon XSL vom folosi va conține câteva marcaj normale generate de SharePoint pentru a genera vizualizarea, cât și propria noastră marcaj particularizat utilizat pentru a suprascrie anumite părți din aceasta se calculează valoarea nostru dorită pentru noi.

Dați credit în cazul în care se va face de credit, șabloane XSL pentru a face calcule real folosesc pentru această soluție graciously au fost furnizate de "swirch" pe forumuri MSDN:
http://social.msdn.microsoft.com/Forums/en-US/sharepointcustomization/thread/aeda905b-9bc6-40c4-bd22-21306c5cb0d2/

Descărcați XSL foaia de stil (aging.zip) am pus împreună află aici:
https://OneDrive.live.com/?cid=c262e8e2d59a86d9&permissionsChanged=1&id=C262E8E2D59A86D9! 104

Deschiderea astfel în editorul text preferate veți vedea mult normală SharePoint XSL marcaj pentru redarea vizualizări, dacă păstrați defilați în jos la linia 357 vor vedea începutul șabloanele particularizate pe care l-am adăugat la marcajul, o prima fiind șablonul "DateDiff" urmate de "se calculează-iulian-Ziua" și "FieldRef_printTableCell_EcbAllowed.Days_x0020_At_x0020_Status". Acestea sunt șabloanele noastre trei care va face și a afișa noastre calcule în nostru vizualizări. Dacă veți utiliza numele de domeniu diferit decât s-au specificat mai devreme în acest articol, trebuie să parcurgeți aceste șabloane și a înlocui orice referințe pentru celelalte nume. Rețineți, pentru acest lucru se recomandă să utilizați nume intern nu afișează numele câmpului.

După ce sunteți mulțumit că șablonul este gata pentru a accesa, navigați la biblioteca de stiluri și încărcați-o sub folderul "Foi de stiluri XSL", apoi copiați în jos link la fișier. Acest lucru va permite să cu ușurință efectuați modificări la acesta mai târziu sau adăugați-l la diferite părți ale site-ul după vă plac.

În continuare, mergeți la listă și selectați vizualizarea pe care l-ați creat mai devreme în acest articol. Din "Acțiuni Site" meniu faceți clic pe "Editare pagină".

Comanda Editare pagină din meniul Acțiuni site

Găsiți partea Web de vizualizare de listă pe pagina și deschideți meniul parte Web făcând clic pe săgeata în jos mică orientat către în colțul din dreapta. Din acest meniu, selectați "Editare parte Web".

Comanda Editare parte web din meniul Parte web

Acest lucru va deschide meniul parte Web în partea dreaptă a ferestrei browserului.

meniu Componentă Web

Faceți clic pe + pentru "Diverse" secțiune și găsiți proprietatea "XSL Link".

Proprietatea XSL Link din meniul Parte web

Lipiți linkul la fișier XSL în biblioteca de stiluri pe care ați copiat mai devreme în jos (acest lucru poate fi o legătură relativă sau absolută).

Link la fișier XSL lipit

Faceți clic pe "OK" pentru a salva modificările, apoi faceți clic pe butonul "Oprire editare" panglica "Pagina" partea de sus a paginii.

Butonul Oprire editare pe fila Pagină

Dacă tot ceea ce a fost configurată corect ar trebui să vedeți acum numerele de pe coloana "Zile în stare".

Coloana Zile în stare care afișează numărul

Și, în cele din urmă, Iată ceea ce va arăta asemănător cu unele testarea datelor de date diferite:

Raport de vechime care afișează datele de test

Rezumat:

Iată: un mod frumos formatat, robuste și mai bine slabi pentru a crea un raport vechi în SharePoint., complet cu o implementare simplă nu necesită cod. Acest lucru destul câteva potențialelor aplicații în afară de cea utilizați caz am explorat aici. Un alt scenariu comune pentru acest tip de raport este ataşarea-l la o listă de activități astfel încât să puteți vedea cât acesta a fost când o activitate a fost creat dintr-o privire.

Se poate bucura de!

-Iustin

Justin Joyce, LANtek

Comentarii

Pașii lipsă
8/10/2012 3:51 AM
ok, am urmat pașii, dar trebuie să fie ceva lipsă - cum veți ști XSL dată care se utilizează sau care de câmp pentru a adăuga zile de la în? place când pașii sunt pierdute.

Nu necesită cod, de acord!
30/8/2012 12:12:00
sunt de acord - să nu credeți că acest lucru înseamnă de fapt numără ca "fără cod".
Interesant, prin câteva greşit SharePoint, am o coloană calculată de lucru utilizând astăzi... nu știți sigur cum sau de ce, deoarece nu pot face pentru a face acest lucru din nou, dar cel este tot acolo și lucrați.

Coloană calculată formula pentru "Zile în stare"?
5/2/2012 7:39 AM
iustin - ce este formula pe care ați utilizat pentru de coloane de site calculat "Zile în stare" (substituent coloana)? Acesta a fost "= astăzi"?

SharePoint 2007
2/12/2011 11:29 AM
în prezent să au nu încearcă să se aplice această soluție la SharePoint 2007, totuși caut în la acesta. Din păcate, nu există nicio proprietate XslLink scos pe partea web prin interfața utilizator.

Mare Post
30/11/2011 9:53 AM
Bună ziua,
mare Post.
utilizez SharePoint 2007.
Nu am o secțiune diverse ca mai sus.
Aveți pașii pentru o configurare SP2007?
Mulțumire.

Re: Nu necesită cod soluție: afișarea în zile, deoarece un element de listă SharePoint a fost ultima schimbat
11/10/2011 8:24 AM
Hi Chris.
mare găsi!
am de gând să aruncăm o privire la ceea ce ați publicat hopefully mai târziu astăzi și vedeți dacă pot face această soluție puțin mai robustă.
sunt bucuros ați apreciat publicarea și sunt foarte bucuros ce au putut să găsim o soluție la formatul de dată Europene. :)
-Iustin

Soluție pentru formatele de dată European
11/10/2011 6:45 AM
Hi din nou iustin,
FYI, am găsit o soluție pentru problemă pot menționat anterior pe această pagină;
https://sharepointbydummies.wordpress.com/2011/07/13/possible-work-around-to-date-format-issue-sharepoint-2010/

Formate de dată European
7/10/2011 3:59 AM
Hi iustin,
acesta este un foarte bună soluție datorită și pur și simplu la fel de lucru pe care am petrecut ultimele două zile căutați! Cu toate acestea sunt cu un pic de o problemă cu ea și sper ar putea să mă ajute.
să le-ați modificat codul ușor la calcultate numărul de zile până când se întâmplă ceva, mai degrabă decât de atunci, prin trecerea variabilele la ultimul rând al funcției "DateDiff";

< xsl:value-de selectare = "$JulianToday - $JulianStartDate" >< / xsl:value-a >

cu toate acestea sunt doar putea accesa caclulate diferența corect jumătate de oră. Așadar, de exemplu, cu această dată (format dd/MM/yyyy);

30/12/2011

se calculează corect, dar cu această dată (aceeași formatare)

10/12/2011

se calculează ca dacă dacă 10-Dec-2011 mai degrabă decât să 12-Oct-2011.
am încercat pur și simplu comutarea pozițiilor valorilor zi și lună în variabilă "JulianStartDate", cum ar fi acest lucru;

< xsl: nume cu param = "Lună" select="substring(ddwrt:FormatDateTime(string($StartDate), 1033,"yyyyMMdd"), 7, 2)" / >
< xsl: nume cu param = "Ziua" select="substring(ddwrt:FormatDateTime(string($StartDate), 1033,"yyyyMMdd"), 5, 2)" / >

și acest lucru corectate problemă cu a doua data, însă a fost apoi incorecte pentru prima dată!
, De asemenea, încercate modificarea apeluri FormatDateTime se utilizează European LCID și diverse modificări la ultimul parametru de FormatDateTime (de exemplu, ZZMMAAAA, MMddyyyy) cu ajustările necesare pentru parametrii poziționali subșir fără succes.
pot aprecia foarte mult orice sfat poate oferi.
Mulțumesc,
Chris

Nu necesită cod
21/9/2011 4:27 AM
să nu credeți că că XSL se califică ca o soluție "nu necesită cod", ca înțelegerea limbaj XSL nu este pentru toată lumea - totuși aceasta nu implică programare. Pe lângă care: frumos soluția, vă mulțumim!

Notă : Exonerare de răspundere pentru traducere automată: Acest articol a fost tradus de un sistem computerizat, fără intervenție umană. Microsoft oferă aceste traduceri automate pentru a ajuta utilizatorii vorbitori de alte limbi decât engleza să beneficieze de conținutul despre produsele, serviciile și tehnologiile Microsoft. Pentru că articolul a fost tradus de un computer, poate conține erori de vocabular, sintaxă sau gramatică.

Extindeți-vă competențele
Explorați instruirea
Fiți primul care obține noile caracteristici
Alăturați-vă utilizatorilor Office Insider

Au fost utile aceste informații?

Vă mulțumim pentru feedback!

Vă mulțumim pentru feedback! Se pare că ar fi util să luați legătura cu unul dintre agenții noștri de asistență Office.

×