Bez koda risinājums: dienu parādīšana kopš pēdējā saraksta elementa izmainīšanas
Applies To
SharePoint pakalpojumā Microsoft 365 SharePoint pakalpojumā Microsoft 365 maziem uzņēmumiemblakus Justin Joyce, LANtek
Piezīme.: Šis raksts ir daļa no to ziņu kolekcijas, kas ir no četriem gadiem.
Pārskats: pielāgotas atskaites par vecumiem bez koda
Viena no bieži pieprasītajām SharePoint vietnes funkcionālajām daļām ir pārskats par novecošanu uzdevumiem vai saraksta elementiem. Citiem vārdiem sakot, cik dienas/mēnešus ir kopš šī saraksta vienuma pēdējās modificēšanas?
Virspusē tas šķiet ļoti vienkāršs pieprasījums. Mums ir datumi, kad ir izveidoti un modificēti vienumi, mums ir iespēja saglabāt pielāgotus datumus, kad noteiktas izmaiņas vienumos notiek, izmantojot notikumu uztvērējus. Mums ir aprēķinātās kolonnas, kur, strādājot ar mūsu informāciju, var iekļaut Excel-Like formulas. Tas šķiet diezgan taisni uz priekšu. Mēs izvēlamies datumu lauku, izveidojat aprēķināto kolonnu un pēc tam formulā kaut ko no [DateField] – [šodien]. Ah, ne tik ātri, lai gan! Tā kā ikviens, kurš mēģināja veikt šo "vienkāršo" uzdevumu, ir zināms, ka aprēķinātā kolonnā mēģina izmantot kaut ko līdzīgu [šodien]. Ja vēlaties ievietot [šodien] savas aprēķinātās kolonnas formulas lodziņā, tiek parādīts kļūdas ziņojums, kas līdzīgs šim:
Kāpēc tas ir? Tam ir sakars ar aprēķināto kolonnu aprēķinu.
Pieņemsim, ka tiek parādīta vienkārša formula kā piemērs:
= IF ( [Kolonna1] <= [Kolonna2], "labi", "nav labi")
Šeit ir norādīts, ka Kolonna1 ir mazāka vai vienāda ar Kolonna2, pēc tam parādīt labi, pretējā gadījumā netiek rādīts labi. Šī ir diezgan tipiska aprēķinātās kolonnas pamatformula, un tajā ir pamata pieņēmums par saraksta elementu, kurā iekļautas šīs kolonnas: Kolonna1 un Kolonna2 vērtības nekad netiks mainītas bez atjaunināšanas notikuma saraksta elementā.
Tas ir pareizi, aprēķinātās kolonnas tiek pārrēķinātas tikai pēc saraksta atjaunināšanas (vai izveides), jo tās pieņem, ka jūsu aprēķinātā informācija ir iekļauta pašā vienumā. Tas rada problēmu, kad mēģināt izmantot kaut ko, kas mainās neatkarīgi no vienuma laukiem, piemēram, šodienas datuma.
Tagad es nebiju sapulcē, kurā nolēma, ka tas ir veids, kā aprēķinātās kolonnas funkcionētu, taču, ja man bija jāveic izglītots minējums, es uzņemtos, ka tās darbojas šādi. Iedomājieties, ja jums bija vairāku tūkstošu vienumu saraksts, kuros ir iekļauta aprēķinātā kolonna, kurai bija nepieciešams "Live" atjauninājums. Tas nozīmē, ka kādam mehānismam, iespējams, taimera darbam, ir jāatkārto visi vienumi, kuros šī aprēķinātā kolonna ir vienmēr tik bieži, kā arī atjaunināta tās vērtība. To var izdarīt ļoti ar nodokļiem, jo, izmantojot lielākus izvietojumus, šis darbs var nepārtraukti darboties un mainīt vienumus. Tas ir tikai mans minējums, bet, ja domājat par to, ir diezgan mazliet saprātīgāks.
Ir daži ieteikumi, kā izmantot līdzīgus risinājumus, kas peld ap to, kas ietver viltu ar SharePoint, lai akceptētu šodienas vērtību, vispirms izveidojot kolonnu ar nosaukumu Today, pēc tam pievienojiet to savā formulā, pēc tam izdzēsiet to. Tie visi ir labi, taču atceries, ko es teicu par aprēķinātajām kolonnām. Šī vērtība tiks mainīta tikai pēc vienuma atjaunināšanas, kas nozīmē, ka vērtības būs nepareizas, jo īpaši dienas aprēķina gadījumā.
Esmu redzējis citas personas, kas izmanto atjautīgu JavaScript, lai rakstītu vērtības lapā. Šī darbība arī notiks, taču man ir diezgan daudz kategoriski pret klienta skriptu, ja no tā var izvairīties.
Īstenošanu
Kā rīkoties? Aprēķinātās kolonnas ir ārpus jautājuma ar t.s. gaistošās funkcijas, piemēram, šodien. Ir iespējams, ka mēs izveidojam kādu pielāgotu kodu, kas parūpēsies par to, lai mums patīk aprēķinātā kolonna, taimera darbs vai ieplānotie procesi, un atjauniniet ikvienu vienumu, kam nepieciešams šis aprēķins. Tas sniedz mums atgriešanos pie problēmas ar darbību, kas minēta pēdējā rindkopā, un turklāt tas ir trausls risinājums, kas būtu ļoti specifisks konkrētajai vietnei/sarakstam/kolonnai. Pamatojoties uz šiem diviem apsvērumiem, jums ir jāiet atrast arī kādu nerdy puisi, piemēram, es, kas zina, kā kodēt un pārliecināt viņu izveidot šo risinājumu. Taču ir vienkāršāks veids!
Ja jums ir tiesības izveidot laukus un rediģēt lapas savā vietnē, un jums ir mazliet zināšanu par XSLT un skatu izveidi, varat salikt kopā XSL veidni, ko var iekļaut saraksta skatā, un tas noteikti aprēķinās jūsu vērtību ikreiz, kad tiek pieprasīta lapa. Šajā scenārijā tiek noņemtas mūsu rūpes par veiktspēju, un nav nepieciešams pielāgots kods, kas jāizstrādā un jāizvieto, izmantojot risinājumu.
Īsto. Kā to var izdarīt?
-
Izveidojiet vai atlasiet lauku, kas darbosies kā mūsu avots. Tam jābūt datuma tipam.
-
Izveidojiet lauku, kas darbosies kā vietturis aprēķinātajai vērtībai.
-
Pievienojiet abus šos laukus satura tipam un pievienojiet šo satura tipu sarakstam.
-
Izveidojiet šī saraksta skatu, kurā ir gan avota, gan viettura kolonnas.
-
Augšupielādējiet XSL veidni stilu bibliotēkā.
-
Saraksta skata tīmekļa daļā iestatiet rekvizītu "XSL saite", izmantojot lietotāja interfeisu.
-
Panākumus!
Izpētīsim piemēru izmantošanas gadījumu un izskatīsim īstenošanu. Mūsu klients vēlējās skatīt savu galveno sarakstu, kas norāda, cik ilgi konkrētais saraksta elements ir sēdējis tā statusā. Šajā sarakstā ir ietverts pielāgots vietnes satura tips, kas iegūts no vienuma tipa un pievienots sarakstam. Jau bija notikuma saņēmējs, kas tver katru reizi, kad saraksta elementa lauks statuss ir mainīts un saglabāts šajā datumā kolonnā "datuma statuss mainīts". Viss šis elektroinstalācijas nav nepieciešams, un to var paveikt ar jebkuru datuma lauku (tas vienkārši tā notiek, šī ir mūsu implementēšana, bet jums ir bezmaksas eksperiments). Ja nepieciešams, nepieciešamais minimums ir avota datuma lauks un viettura lauks, lai apvilktu aprēķinu (vairāk par to nākamajā rindkopā), kas pievienots jūsu sarakstam, lai gan iesakām izmantot vietnes kolonnas un vietnes satura tipus gadījumam, ja vēlaties atkārtoti izmantot šo risinājumu citās vietnes vietās.
Tāpēc mums ir mūsu avota datums, ko varam izmantot mūsu aprēķinā atbilstoši šodienas datumam. Tagad mēs varam izveidot pielāgotu vietnes kolonnu, kas izmantojama kā konteiners mūsu aprēķinātajai vērtībai. Šajā gadījumā es izvēlējos izmantot aprēķināto kolonnu, jo tās nevar mainīt jaunā vai rediģējamā vienuma formās, bet tās var atlasīt parādīšanai skatos, jo nevēlos, lai lietotāji šajā kolonnā varētu ievadīt patvaļīgas vērtības. Tas var būt mulsinoši attiecībā uz to, kāpēc tas netiek rādīts skatos, utt.
Tagad, kad ir mūsu vietnes kolonna, to var pievienot mūsu satura tipiem, kas tiks izmantoti mūsu sarakstā. Pēc tam ir jāizveido mūsu skats, kas vēlāk tiks pielāgots ar mūsu XSLT. Pārliecinieties, vai tiek izveidots standarta skats, kurā ir jūsu avota datuma kolonna un jaunā aprēķinātā kolonna, kas darbosies kā vietturis aprēķinātajai vērtībai.
Tagad mums ir viss, kas mums būs nepieciešams, lai atbalstītu mūsu pielāgoto novecošanās atskaiti. Viss, kas paliek, veido mūsu XSL veidni, augšupielādējot to vietnes stila bibliotēkā un saistot to ar mūsu saraksta skatu. Izmantotajā XSL veidnē ir iekļauta daļa parastas SharePoint ģenerētas atzīmes, kas ļauj ģenerēt skatu, kā arī mūsu pielāgotās atzīmes, ko izmanto, lai ignorētu noteiktas daļas, un aprēķināt mūsu vēlamo vērtību mums.
Piešķirt kredītu, ja ir jāveic kredīts, XSL veidnes, lai veiktu faktiskos aprēķinus, ko izmantoju šim risinājumam, ir laipni nodrošinājis "swirch" MSDN forumos: http://Social.MSDN.Microsoft.com/forums/EN-US/sharepointcustomization/thread/aeda905b-9bc6-40c4-bd22-21306c5cb0d2/
Lejupielādēt XSL stilu lapu (aging.zip), ko esmu apkopojis šeit: https://OneDrive.Live.com/?CID=c262e8e2d59a86d9&permissionsChanged = 1&ID = c262e8e2d59a86d9! 104
Atverot to savā iecienītajā teksta redaktorā, redzēsit pietiekami daudz parastas SharePoint XSL atzīmes, lai padarītu skatus, ja saglabājat ritināšanu uz leju līdz rindiņai 357, redzēsit to pielāgoto veidņu sākumu, kas ir pievienotas atzīmei, pirmais ir "DateDiff" veidne, kam seko "aprēķināt-Julian-Day" un "FieldRef_printTableCell_EcbAllowed. Days_x0020_At_x0020_Status". Šīs ir mūsu trīs veidnes, kas padarīs un rādīs mūsu aprēķinus mūsu skatos. Ja vēlaties izmantot atšķirīgus lauku nosaukumus, nekā norādīts iepriekš šajā rakstā, šīs veidnes būs jāveic un jāaizstāj jebkuras atsauces uz citiem nosaukumiem. Atcerieties, ka šajā gadījumā jūs vēlēsities izmantot lauka iekšējo nosaukumu, nevis parādāmo vārdu.
Kad esat pārliecinājies, ka veidne ir gatava darbam, atveriet savu stila bibliotēku un augšupielādējiet to, izmantojot mapi "XSL stila lapas", un pēc tam nokopējiet saiti uz failu. Tas ļaus mums viegli veikt izmaiņas vēlāk vai pievienot to dažādām vietnes daļām, kā mēs to darām.
Pēc tam dodieties uz savu sarakstu un atlasiet skatu, ko izveidojāt iepriekš šajā rakstā. Izvēlnē "vietnes darbības" noklikšķiniet uz Rediģēt lapu.
Lapā atrodiet saraksta skata tīmekļa daļas un atveriet tīmekļa daļas izvēlni, noklikšķinot uz mazās lejupvērstās bultiņas augšējā labās puses stūrī. Šajā izvēlnē atlasiet "rediģēt tīmekļa daļā".
Tādējādi pārlūkprogrammas loga labajā pusē tiks atvērta tīmekļa daļas izvēlne.
Noklikšķiniet uz +, lai iegūtu sadaļu "dažādi", un atrodiet rekvizītu "XSL saite".
Ielīmējiet saiti uz XSL failu jūsu stilu bibliotēkā, kuru nokopējāt iepriekš (tā var būt relatīva vai absolūta saite).
Noklikšķiniet uz "labi", lai saglabātu izmaiņas, un pēc tam noklikšķiniet uz pogas pārtraukt rediģēšanu lapas augšdaļā esošajā lentē.
Ja viss ir konfigurēts pareizi, tagad ir jāredz skaitļi kolonnā "dienas pēc statuss".
Un visbeidzot, Lūk, kā tas izskatīsies ar dažiem testa datiem dažādos datumos:
Kopsavilkums.
Šeit tas ir: lieliski formatēts, robusts un veiksmīgāks veids, kā izveidot novecojušu pārskatu par SharePoint. Šī ir diezgan daži potenciālie pieteikumi, kas neizmanto vienu lietošanas gadījumu. Vēl viens izplatīts scenārijs šī veida atskaitei tiek pievienots uzdevumu sarakstam, lai jūs varētu skatīt, cik ilgā laikā tas ir bijis.
Izbaudiet!
--Justin
Džastins Džoiss, LANtek
Komentāri
Trūkst
darbību 10/8/2012 3:51 AM labi, es sekoju šīm darbībām, taču ir jābūt kaut kam trūkstošam — kā XSL noskaidros, kuru datumu izmantot, vai arī lauku, kurā jāpievieno dienas. nepatīk, kad darbības ir palaistas garām.Bez koda, piekrita!
8/30/2012 12:12 PM Es piekrītu-es nedomāju, ka tas īstenībā ir "bez koda". Interesanti, izmantojot kādu nemākulis no SharePoint, man ir aprēķinātā kolonna, kas izmanto today... vai neesat pārliecināts, kā to paveikt, jo es nevaru to izdarīt atkārtoti, taču tas joprojām ir pieejams un darbojas.Formula "dienas pēc statusa" aprēķinātā kolonna?
5/2/2012 7:39 AM Justin-kas ir formula, ko izmantojāt savām "dienas pēc statusa" aprēķinātās vietnes kolonnas (viettura kolonna)? Vai tas bija "= Today"?SharePoint 2007
12/2/2011 11:29 AM Pašlaik man nav mēģināts šo risinājumu lietot SharePoint 2007, taču es to meklēju. Diemžēl tīmekļa daļā nav XslLink rekvizīta, izmantojot UI.Lieliska ziņa
11/30/2011 9:53 AM Sveiki! Lieliska ziņa. Es izmantoju SharePoint 2007. Man nav sadaļas Misc, kā norādīts iepriekš. Vai jums ir darbības SP2007 konfigurācijai? paldies.No jauna: nav koda risinājuma: dienu parādīšana, jo ir pēdējoreiz mainīts
SharePoint saraksta vienums 10/11/2011 8:24 AM Sveiki, Kriss. lieliska meklēšana! es apskatīsim, kādu risinājumu vēlāk izveidojāt, izmantojot šo iespēju, un noskaidrojiet, vai šī risinājuma izmantošana ir nedaudz sarežģītāka. Es priecājos, ka tev patīk šis amats, un es ļoti priecājos, ka varējāt atrast risinājumu Eiropas datuma formātam. :) -JustinRisinājums Eiropas datumu formātiem https://sharepointbydummies.WordPress.com/2011/07/13/possible-Work-Around-to-Date-Format-Issue-SharePoint-2010/
10/11/2011 6:45 AM Hi again Justin, FYI, es atradu risinājumu par problēmu, ko minēju iepriekš šajā lapā;Eiropas datuma formāts
10/7/2011 3:59 AM Sveiks, Džastins! Tas ir ļoti labs risinājums thanks un tikai to, ko esmu pavadījis pēdējo divu dienu laikā. Taču man radās problēmas ar šo problēmu, un es cerēju, ka vari man palīdzēt. Esmu mazliet mainījis savu kodu, lai calcultate dienu skaitu, līdz kaut kas notiek, un pēc tam pārslēdzat mainīgos (funkcija DateDiff) pēdējā rindiņā. <XSL: Select vērtība = "$JulianToday-$JulianStartDate" ></XSL:> vērtība Taču es varu tikai iegūt to, lai caclulate starpība būtu pareiza. Tātad, piemēram, ar šo datumu (formāts DD/MM/GGGG); 30/12/2011 Tā aprēķina pareizi, bet ar šo datumu (tas pats formāts) 12/10/2011 Tā aprēķina, it kā IF 10-Dec-2011, nevis 12-okt-2011. Es mēģināju vienkārši mainīt dienas un mēneša vērtību pozīcijas "JulianStartDate" mainīgajā, piemēram, šādi. <XSL: with-paras name = "month" Select = "SUBSTR (ddwrt: Funkcija FormatDateTime (string ($StartDate), 1033," GGGGMMDD "), 7, 2)"/> <XSL: with-paras name = "Day" Select = "SUBSTR (ddwrt: Funkcija FormatDateTime (string ($StartDate), 1033," GGGGMMDD "), 5,2)"/> Un tas izlaboja problēmu ar otro datumu, taču pēc tam tas bija nepareizs ar pirmo datumu! Esmu mēģinājis arī mainīt Funkcija FormatDateTime zvanus, lai izmantotu Eiropas LCID un dažādas izmaiņas pēdējā parametrā Funkcija FormatDateTime (piemēram, ddMMyyyy, MMddyyyy) ar atbilstošiem pielāgojumiem apakšvirknes pozicionālajos parametros bez panākumiem. Esmu ļoti pateicīgs par jebkuru padomu, ko piedāvājat. Paldies! KrissBez koda
9/21/2011 4:27 AM Nesaprotu, ka XSL kvalificējas kā "bez koda" risinājums, jo izpratne par XSL valodu nav domāta visiem lietotājiem, tomēr tajā nav ietverta programmēšana. Bez tam: jauks risinājums, Paldies!