Řešení bez kódu: zobrazení dnů od poslední změny položky seznamu
Applies ToSharePoint v Microsoftu 365 SharePoint v Microsoftu 365 Small Business

Podle 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:

Chybová zpráva

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?

  1. Vytvořte nebo vyberte pole, které bude fungovat jako náš pramen. Musí se jednat o typ data.

  2. Vytvořte pole, které bude sloužit jako zástupný symbol pro vypočtenou hodnotu.

  3. Obě tato pole přidejte do typu obsahu a přidejte tento typ obsahu do seznamu.

  4. Vytvořte zobrazení seznamu obsahujícího zdrojový i zástupný sloupec.

  5. Nahrajte šablonu XSL do knihovny stylů.

  6. Nastavte vlastnost propojení XSL pro webovou část Seznam prostřednictvím uživatelského rozhraní.

  7. 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.

Příkaz Upravit stránku v nabídce Akce webu

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.

Příkaz Upravit webovou část v nabídce Webová část

Otevře se nabídka webové části na pravé straně okna prohlížeče.

Nabídka Webová část

V části "různé" klikněte na + a najděte vlastnost odkaz XSL.

Vlastnost Odkaz na data XSL v nabídce Webová část

Vložte odkaz na soubor XSL do knihovny stylů, kterou jste zkopírovali dříve (může to být relativní nebo absolutní odkaz).

Odkaz na soubor XSL vložený do

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.

Tlačítko Ukončit úpravy na kartě Stránka

Pokud je všechno správně nakonfigurované, měly by se zobrazit čísla ve sloupci "počet dnů ve stavu".

Sloupec stavu ke dni zobrazující číslo

A konečně, tady je to, jak by to vypadalo s některými testovacími daty různých kalendářních dat:

Sestava stárnutí zobrazující testovací data

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 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; https://sharepointbydummies.wordpress.com/2011/07/13/possible-work-around-to-date-Format-Issue-SharePoint-2010/

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, Svoboda

Bez 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í!

Potřebujete další pomoc?

Chcete další možnosti?

Prozkoumejte výhody předplatného, projděte si školicí kurzy, zjistěte, jak zabezpečit své zařízení a mnohem více.

Komunity vám pomohou klást otázky a odpovídat na ně, poskytovat zpětnou vazbu a vyslechnout odborníky s bohatými znalostmi.