Řešení bez kódu: zobrazení dnů od poslední změny položky seznamu
Applies To
SharePoint v Microsoftu 365 SharePoint v Microsoftu 365 Small BusinessPodle Justin Joyce, LANtek
Poznámka: Tento článek je součástí sbírky příspěvků ze čtyř let, kde najdete blog pro koncové uživatele SharePointu.
Přehled: vlastní sestavy splatnosti bez kódu
Jednou z často požadovaných funkčních částí SharePointového webu je sestava o sledování splatnosti pro úkoly nebo položky seznamů. Jinými slovy, kolik dní/měsíců bylo od poslední změny této položky seznamu?
Na tomto povrchu je to velmi jednoduchá žádost. Po všech položkách, které jsou vytvářeny a upravovány, máme k dispozici termíny pro uložení vlastních kalendářních dat, když probíhají určité změny položek prostřednictvím přijímačů událostí. Ve výpočtových sloupcích jsme zahrnuli vzorce, do kterých můžete zahrnout vzorce, které se dají použít k práci s našimi informacemi. Zdá se, že je to docela rovné. Vybíráme pole data, vytvoří se počítaný sloupec a potom se vzorcem zobrazí něco po řádcích [DateField] – [dnes]. Protokol AH, ne tedy rychlý! Protože každý, kdo se pokusil o tento jednoduchý úkol, se snaží použít něco, jako je [dnes] ve počítaném sloupci způsobuje problémy. Pokus o vložení položky [dnes] do pole vzorce počítaného sloupce vám poskytne chybovou zprávu, která vypadá takto:
Proč je to? Stejně tak se musí počítat se způsobem výpočtu počítaných sloupců.
Podívejme se na příklad:
= Když ( [Sloupec1] <= [Sloupec2], "OK", "v pořádku")
Vše je to, že když je sloupec Sloupec1 menší nebo roven hodnotě Sloupec2, zobrazí se v opačném případě zobrazení ne OK. Jedná se o poměrně typický základní vzorec pro počítaný sloupec a provede základní předpoklad o položce seznamu, která obsahuje tyto sloupce: hodnoty pro sloupec Sloupec1 a Sloupec2 se nikdy nedají změnit bez události aktualizace u položky seznamu.
To je tedy, že počítané sloupce budou přepočítány pouze v případě, že se seznam aktualizuje (nebo je vytvoří), protože tyto informace přejímají. Tím se vytvoří problém, když se snažíte použít něco, co se mění nezávisle na polích dané položky, například aktuální datum.
Teď nejste na schůzce, kde se rozhodla, že se jedná o způsob, jakým se mají vypočítat počítané sloupce, ale pokud bych chtěl udělat svůj odhad, že by tento způsob fungoval na výkon. Představte si, že máte seznam několika tisíc položek, z nichž každý obsahuje počítaný sloupec, který vyžaduje aktualizaci "Live". To by znamenalo, že některé mechanismy, třeba úloha časovače, by musely iterovat každou položkou, která tento počítaný sloupec obsahuje, vždy tak a aktualizovat. To může být mimořádně výjimečné z hlediska výkonu, protože při větších nasazeních může být tato úloha neustále funkční a mění se. To je jenom můj odhad, ale pokud o ní myslíte, dělá se to poměrně.
Existují některé návrhy na podobná řešení, která jsou k dispozici v okolí, ve kterém se nacházíte na základě toho, že se vám na SharePointu přejímá hodnota dnes, a to tak, že nejprve vytvoříte sloupec s názvem dnes Je to vše dobré a správné, ale uvědomte si, co o čem se při aktualizaci počítaných sloupců týká. Tato hodnota se změní pouze při aktualizaci položky, takže vaše hodnoty budou brzy nesprávné, obzvláště v případě výpočtu dne.
Viděli jsem ostatní pomocí chytrých JavaScript k zápisu hodnot na stránku. To by také fungovalo, ale I když je to v podstatě categorically proti klientskému skriptu, když se to může vyhnout.
Zavedení
Co dělat? U počítaných sloupců chybí otázka, která se nazývá "nestálější" funkce, jako třeba dnes. Je možné, že jsme mohli vyvinout nějaký vlastní kód, který by se mohl stát pro nás, jako je počítaný sloupec, úloha časovače nebo plánovaný proces, který se má použít, a aktualizujte každou jednu položku, která tento výpočet vyžaduje. Díky tomu se nám nepodaří vyřešit problém s výkonem, který je uvedený v posledním odstavci, a navíc je to brittle řešení, které by bylo pro daný web a seznam či seznam a sloupec velmi zvláštní. Na základě těchto dvou otázek je také nutné najít nerdy chlapík, třeba mě, který ví, jak kód a přesvědčit, aby vám toto řešení vyhledal. Ale jednodušší způsob
Pokud máte práva k vytváření polí a úpravám stránek na vašem webu a máte spoustu znalostí o transformacích XSLT a vytváření zobrazení, můžete vytvořit šablonu XSL, která se dá zahrnout do zobrazení seznamu, a při každé žádosti na stránku vyhodnotí. Tento scénář odebírá náš problém před výkonem a nevyžaduje vyvinutí vlastního kódu a jeho nasazení prostřednictvím řešení.
Ideální. Jak to máme?
-
Vytvořte nebo vyberte pole, které bude fungovat jako náš pramen. Musí se jednat o typ data.
-
Vytvořte pole, které bude sloužit jako zástupný symbol pro vypočtenou hodnotu.
-
Obě tato pole přidejte do typu obsahu a přidejte tento typ obsahu do seznamu.
-
Vytvořte zobrazení seznamu obsahujícího zdrojový i zástupný sloupec.
-
Nahrajte šablonu XSL do knihovny stylů.
-
Nastavte vlastnost propojení XSL pro webovou část Seznam prostřednictvím uživatelského rozhraní.
-
Hotovo.
Podívejme se na příklad případu použití a procházení implementacemi. Náš zákazník si chce prohlédnout hlavní seznam, který jim informuje o tom, jak dlouho se konkrétní položka seznamu účastnila svého stavu. Tento seznam obsahoval vlastní typ obsahu webu odvozený z typu položky a přidaný do seznamu. Příjemce události už je na místě, kde se nacházelo při každé změně pole stavu u položky seznamu a jeho uložení do sloupce s názvem "Změna stavu data". Všechno toto propojení není povinné a dá se dělat s LIBOVOLNÝm datovým polem (to se děje jenom tímto je naše implementace). To, co potřebujete, je třeba mít vaše zdrojové datové pole a zástupné pole, abyste podrželi výpočet (Další informace v tomto dalším odstavci) přidaného do seznamu, ale navrhujeme používat sloupce webu a typy obsahu webu pro případ, že byste chtěli toto řešení opakovaně použít na dalších místech na webu.
Takže máme naše zdrojové datum, které můžeme použít v našich výpočtech oproti dnešnímu datu. Teď můžeme vytvořit vlastní sloupec webu, který bude sloužit jako kontejner pro naši počítanou hodnotu. V tomto případě se používá počítaný sloupec, protože se nedá změnit na nové nebo upravovat formuláře položek, ale dá se vybrat pro zobrazení v zobrazeních, protože nechcete, aby uživatelé do tohoto sloupce zadali libovolné hodnoty. Může být matoucí, proč se nezobrazuje v zobrazeních atd.
Teď, když máme sloupec webu, můžeme ho přidat k našim typům obsahu, který se použije v našem seznamu. Potom musíme vytvořit naše zobrazení, které bude později přizpůsobeno naší transformací XSLT. Ujistěte se, že jste vytvořili standardní zobrazení, které obsahuje zdrojový sloupec data a nový počítaný sloupec, který bude sloužit jako zástupný symbol pro vypočtenou hodnotu.
Teď máme všechno na místě, že budeme muset podporovat naši vlastní sestavu o sledování splatnosti. Vše, co zůstává vytvoří šablonu XSL, její nahrání do knihovny stylů webu a propojení s naším zobrazením seznamu. Šablona XSL, která bude použita, bude obsahovat několik běžných značek generovaných službou SharePoint pro generování zobrazení a také vlastní kód, který slouží k přepsání některých částí této funkce a k výpočtu požadované hodnoty pro nás.
Za předpokladu, že kredit je splatný, byly šablony XSL pro výpočet skutečných výpočtů, které používám pro toto řešení, graciously ve fórech MSDN společností "swirch": http://Social.MSDN.Microsoft.com/forums/en-US/sharepointcustomization/Thread/aeda905b-9bc6-40c4-BD22-21306c5cb0d2/
Stáhnout šablonu stylů XSL (aging.zip) jsem tady umístil (a): https://OneDrive.Live.com/?CID=c262e8e2d59a86d9&permissionsChanged = 1&ID = c262e8e2d59a86d9! 104
Otevření: ve svém oblíbeném textovém editoru se zobrazí dostatek běžných automatických značek XSL SharePointu pro vykreslování zobrazení, když budete mít posun dolů na řádek 357, uvidíte začátek vlastních šablon, které jste přidali do značky, a to první, že se jedná o "funkce DateDiff" následovanou "výpočet-juliánské-Day" a "FieldRef_printTableCell_EcbAllowed. Days_x0020_At_x0020_Status". Tady jsou tři šablony, které budou provádět a zobrazovat naše výpočty v našich zobrazeních. Pokud budete chtít používat různé názvy polí, než jste zadali dřív v tomto článku, budete muset projít tyto šablony a nahradit všechny odkazy na ostatní názvy. Nezapomeňte, že budete chtít použít interní název pole, které není zobrazované jméno.
Až budete spokojeni s tím, že šablona je připravená k odeslání, přejděte do knihovny stylů a potom ji nahrajte do složky šablony stylů XSL a pak ji zkopírujte. To vám umožní snadno provést změny později nebo je přidat do různých částí webu.
Pak přejděte na seznam a vyberte zobrazení, které jste vytvořili v tomto článku. V nabídce Akce webu klikněte na Upravit stránku.
Na stránce vyhledejte webovou část Seznam a otevřete nabídku Webová část kliknutím na malou šipku dolů v pravém horním rohu. V této nabídce vyberte možnost Upravit webovou část.
Otevře se nabídka webové části na pravé straně okna prohlížeče.
V části "různé" klikněte na + a najděte vlastnost odkaz XSL.
Vložte odkaz na soubor XSL do knihovny stylů, kterou jste zkopírovali dříve (může to být relativní nebo absolutní odkaz).
Kliknutím na tlačítko OK uložte změny a potom klikněte na pásu karet na stránce v horní části stránky na tlačítko Ukončit úpravy.
Pokud je všechno správně nakonfigurované, měly by se zobrazit čísla ve sloupci "počet dnů ve stavu".
A konečně, tady je to, jak by to vypadalo s některými testovacími daty různých kalendářních dat:
Shrnutí:
Je to přehledná, robustní a lepší způsob, jak vytvořit sestavu sledování stárnutí v SharePointu. To má za pár možných aplikací z případu použití, který jsme tady provedli. Dalším běžným scénářem pro tento typ sestavy je připojit ho k seznamu úkolů, abyste viděli, jak dlouho je to od okamžiku vytvoření úkolu.
Ať se vám líbí!
--Justin
Justin Joyce, LANtek
Komentáře
Chybějící
kroky 10/8/2012 3:51 Po klepnutí na tento příkaz se zobrazuje, že chybí něco, jak bude soubor XSL vědět, jaké datum se má použít nemáte, když se vynechaly nějaké kroky.Nebyl dohodnut žádný kód.
8/30/2012 12:12 ODP . Souhlasím – nemyslím, že se to skutečně počítá jako "žádný kód". Naproti zájmům prostřednictvím některých screwup SharePointu mám v současné době pracovat počítaný sloupec... Nejste si jistí, proč nebo proč ji nemůžete získat, ale pořád tam funguje.Vzorec pro počítaný sloupec "počet dnů ve stavu"?
5/2/2012 7:39 Justin – jaký je vzorec, který jste použili ve sloupci "počet dnů ve stavu" počítaný sloupec webu (zástupný sloupec)? Bylo to "= dnes"?SharePoint 2007
12/2/2011 11:29 V současné době se nepokoušeli použít toto řešení pro SharePoint 2007, ale prohlížím to. Ve webové části není k dispozici žádná vlastnost XslLink přes uživatelské rozhraní.Skvělý příspěvek
11/30/2011 9:53 Ahoj, Skvělý příspěvek. Používám SharePoint 2007. Nemám oddíl různé, jak je uvedeno výše. Máte kroky pro konfiguraci SP2007? Děkuju.Re: řešení bez kódu: zobrazení dnů od poslední změny
položky seznamu SharePointu 10/11/2011 8:24 Ahoj! Skvělé hledání! Podívejme se, co jste si Hopefully později, a podívejte se, jestli je možné toto řešení udělat trochu robustnější. jsem rád, že se mi líbí váš příspěvek, a jsem rád, že jsme našli řešení do evropského formátu data. :) -JustinŘešení pro evropské formáty https://sharepointbydummies.wordpress.com/2011/07/13/possible-work-around-to-date-Format-Issue-SharePoint-2010/
data 10/11/2011 6:45 Znovu Justin, Jsme mi našli řešení problému, který jsem na této stránce dřív zmíněn;Evropské formáty
data 10/7/2011 3:59 Ahoj Justin, Toto řešení je opravdu dobré, a to přesně tak, že jsem vyrostl za poslední dva dny. Mám potíže s tím, že jsem s ním něco nastalo a zkušenostmi vám to pomohl. Změnil (a) jsem kód mírně calcultate počet dní, než se něco stane, a ne od toho, když přepnete proměnné v posledním řádku funkce DateDiff; <xsl: hodnota = "$JulianToday-$JulianStartDate" ></xsl: hodnota> Můžu to ale jen získat tak, aby caclulate rozdíl správně polovinu času. Například s tímto datem (Format DD/MM/RRRR); 30/12/2011 Tento výpočet se vypočte správně, ale s tímto datem (stejný formát) 12/10/2011 Počítá se jako když když je 10-prosinec-2011 místo 12. října-2011. Zkusili jsme jednoduše přepnout pozici hodnot dnů a měsíců v proměnné "JulianStartDate", jako je to; <xsl: with-param Name = "Month" SELECT = "substring (ddwrt: FormatDateTime (String ($StartDate), 1033, ' RRRRMMDD '), 7; 2)"/> <xsl: with-para name = ' Day "SELECT =" substring (ddwrt: FormatDateTime (String ($StartDate), 1033, ' RRRRMMDD '), 5; 2) "/> A tím byly potíže opraveny s druhým datem, ale byly pak nesprávné pro první datum.! Také jste zkusili změnit FormatDateTime volání na použití evropských identifikátorů LCID a různé změny v posledním parametru FormatDateTime (například ddMMyyyy, MMddyyyy) pomocí příslušných úprav parametrů dílčích řetězců bez úspěchu. Chtěl bych vám zamezit jakékoli Doporučené poradenství. Děkujeme, SvobodaBez kódu
9/21/2011 4:27 Nevím, že se XSL neshoduje s řešením, protože jazyk XSL není určen všem-nezahrnuje však programování. Kromě toho: příjemné řešení, poděkování!