SlideShare ist ein Scribd-Unternehmen logo
1 von 60
Using JSLink and Display 
Templates with the List 
View Web Part for ITPros 
#SPSJE 
Paul Hunt 
Solutions Architect 
Trinity 
@Cimares 
www.myfatblog.c 
o.uk
Who Am I? 
• SharePoint Architect for Trinity 
Expert Systems 
• Co-organiser of SUGUK London 
Region 
• Member of the SharePoint 
community since 2007 
• In my spare time I’m a 
woodturner, making Pots, Pens 
and artistic pieces! 
• Paul Hunt 
• Twitter: @Cimares 
• www.myfatblog.co.uk 
• www.trinityservice.co. 
uk
What is this session all about? 
• The List View Web Part
Who’s this session for? 
• Primarily First/Second tier developers 
• ITPros who customised 2010 list views in SPD 
• ITPros that used to write their own XSLT in SP2010 
• Developers that want to know what's available before opening 
VS2012 
• On Premises or Office 365 Deployments 
• Might not be ideal for someone who isn’t comfortable with JavaScript, 
HTML and CSS. 
– Though if you used to play in SPD 2010 you’re halfway there! 
– If you want to know what's achievable without deployed solutions
What did we used to do? 
• We used SPD and the Design View 
• We did conditional formatting 
• Played with colours 
• Injected Hyperlinks
What did we used to do? 
• But 
• No design view anymore!
What did we used to do? 
• We used XSLT Overrides (Still exist, but deprecated!)
What did we used to do? 
• We used XSLT Overrides (Still exist, but deprecated!) 
• Which took boring list data views
What did we used to do? 
• We used XSLT Overrides (Still exist, but deprecated!) 
• And transformed them into engaging visual representations
What did we used to do? 
• We used custom code solutions (We still can!) 
• Custom CAML Rendering Templates 
• Custom List Views 
• Custom Web Parts 
• All bring additional headaches
So why the focus on Client Side 
Rendering?
So why the focus on Client Side 
Rendering? 
• It’s client side, moving the impact of customisations off of the 
web server and onto the often powerful and under utilised 
client machine 
SETI@Home 
Folding@Home
So why the focus on Client Side 
Rendering? 
• It’s client side, moving the impact of customisations off of the 
web server and onto the often powerful and under utilised 
client machine 
• Some client machines may struggle with heavy Javascript loads!
Specifically why JavaScript, HTML and 
CSS? 
• It’s easier to develop.. 
• Much simpler than XSLT 
• Certainly easier to troubleshoot than XSLT 
• Likely to have the skills in house 
• Cross-platform (ish!) 
• Some frameworks such as jQuery help with this
Exactly what is a JavaScript Display 
Template? 
• A small piece of JavaScript code that is called by the 
browser AFTER the page has been delivered. 
• They are prolific in SharePoint 2013 
• Some examples 
• Search Results 
• Field Rendering 
• Search Refiners 
• List Forms 
• List views 
• eDiscovery
Display Template Content Types 
• There are 5 Content Types that represent 
display templates. 
• JavaScript Display Template 
• Control Display Template 
• Group Display Template 
• Item Display Template 
• Filter Display Template 
These 4 relate to Search.
LVWP Templates != Search Display 
Templates 
• LVWP Display Templates are JavaScript only. 
• They do not start life as HTML like Display Templates 
for search do. 
• They do not require embedded properties. 
• CONTEXT (ctx) is king! 
21
We’re just looking at:- 
• List View Display Templates 
• These provide the ability to override the rendering of an entire view 
• Field Rendering Display Templates 
• These provide the ability to override the rendering of a single field in 
a list view
Page Lifecycle – The Foundations
Page lifecycle – The Foundations 
• SharePoint outputs JSLink in the Header of the page 
• This registers our Display Template
Page lifecycle – The Foundations 
• SharePoint LVWP outputs the list data into the page 
• JSON Object Format
Page lifecycle – The Foundations 
• And finally after setting things up 
• Calls the RenderListView() function for the web part. 
• Which in turn: 
– Calls the GetTemplates()
Page lifecycle – The Result 
• Which compares the Context object to the list of registered 
overrides 
• And if everything is in place, our 
override wins the battle!
###CALLOUT – Internal Name Pain 
The_x0020_number_x0020_of_x0020_
###CALLOUT – Internal Name Pain 
• Internal names get encoded once, then URL encoded when displayed 
in the browser adding to the confusion! 
• The internal name of: The_x0020_number_x0020_of_x0020_ 
• Is actually displayed in the browser as :- 
The%5Fx0020%5Fnumber%5Fx0020%5Fof%5Fx0020%5F 
• Special characters such as & add to the fun!
###CALLOUT – Internal Name Pain 
• Multiple long field names lose meaning 
• The_x0020_number_x0020_of_x0020_ • The_x0020_number_x0020_of_x0020_0
###CALLOUT – Internal Name Pain 
• Creating your fields carefully will save you this pain! 
Create Renam 
e
###CALLOUT – Internal Name Pain 
• SharePoint 2013 introduces some new pain with the quick 
edit list functionality.
###CALLOUT – Internal Name Pain 
• I’m not a Dev, why do I care?
###CALLOUT – Internal Name Pain 
• I’m not a Dev, why do I care? 
• Your Developers (if you have them) will love you!
Anatomy of a List View Display Template 
• Start with an empty .JS (Or copy example templates) 
• Define a Function to register the Display Template 
• Define the Function called by the Display Template for each 
item. 
• Call the register function (This is processed when the DT is 
loaded)
Anatomy of a List View Display Template 
• Define a Function to register the Display Template 
For a list of template types see - http://bit.ly/169AbS9
Anatomy of a List View Display Template 
• Define the Function called by the Display Template 
• Note the use of ctx.CurrentItem.Title 
– Any field in the view can be obtained this way 
– You must use the internal name 
• Obtained from the edit column screen 
– Beware the double encoding issue! 
• Or using the browser debugger
Anatomy of a List View Display Template 
• Call the function we defined when the page loads.
Anatomy of a Field Rendering Display 
Template 
• All that really changes is the override set-up 
• This time there are no headers/footers 
• We only specify the Base View ID/Field Name
Anatomy of a Field Rendering Display 
Template 
• The render function is similar to the list view item function
How do we use them with List Views? 
• First we need to upload/create them in the MasterPage 
gallery
How do we use them with List Views? 
• Set some metadata
How do we use them with List Views? 
• Add a link into the JSLink on the web part 
• Note the ~token in use 
– ~sitecollection 
– ~site 
– ~layouts 
– ~sitecollectionlayouts 
– ~sitelayouts 
• You can have multiple JSLinks 
– Join them with |
How do we troubleshoot? 
• IE Developers Toolbar (Other debuggers exist!)
How do we troubleshoot? 
• Fiddler – HTTP Proxy
How do we troubleshoot? 
• Fiddler – HTTP Proxy
http://bit.ly/12kMPvr
There has to be a catch? 
• Minimal Download Strategy 
• Multiple list views on a page 
• Changing SharePoint functionality
There has to be a catch? 
• Minimal Download Strategy 
• Our display templates work on page load 
• But fail during a refresh. 
• This is because our JavaScript doesn’t get called a second time 
• Two workarounds! 
• Turn off the Minimal Download Feature in each Web 
• Include the relevant JavaScript in your Display Template code
There has to be a catch? 
• Multiple list views on a page 
• Because of the way Display Templates are registered, it’s not 
possible to have two on the page if the list templates are the same. 
(E.g. Custom TemplateType = 100) 
• There is a workaround though published on my blog 
• http://bit.ly/JSLinkIssues
There has to be a catch? 
• Changing/Breaking SharePoint functionality 
• For example, overriding the Tasks view breaks SharePoint rendering. 
• This is fixed in the earlier Field demo with a couple of lines of 
JavaScript.
Questions?
#SPCSR 
• www.facebook.com/hashspcsr 
• https://github.com/spcsr
Call to Action! 
• Take a look at these sites for more detailed info 
• Wes Preston – JS Link a primer - http://bit.ly/102fcNa 
• Martin Hatch – JSLink 7 part series - http://bit.ly/Hh5zFk 
• My blog 
• Solving the multiple list view issue - http://bit.ly/JSLinkIssues 
• Editing local JS files using fiddler - http://bit.ly/EditUsingFiddler 
58
Don’t forget SharePint! 
• SHARE·PINT: [SHAIR-PAHYNT] 
Noun 
1. An assembly or meeting in relation to Microsoft SharePoint, 
accompanied with an alcoholic beverage.
Thank You! 
Raffle Prizes at 16:00 
1st #SharePint in the Hotel Bar 
sponsored by Cloudshare 16:30

Weitere ähnliche Inhalte

Was ist angesagt?

Html css crash course may 11th, atlanta
Html css crash course may 11th, atlantaHtml css crash course may 11th, atlanta
Html css crash course may 11th, atlanta
Thinkful
 
Html:css crash course (4:5)
Html:css crash course (4:5)Html:css crash course (4:5)
Html:css crash course (4:5)
Thinkful
 
SPTechCon - Share point and jquery essentials
SPTechCon - Share point and jquery essentialsSPTechCon - Share point and jquery essentials
SPTechCon - Share point and jquery essentials
Mark Rackley
 
網頁程式設計
網頁程式設計網頁程式設計
網頁程式設計
傳錡 蕭
 

Was ist angesagt? (19)

SPSDenver - SharePoint & jQuery - What I wish I would have known
SPSDenver - SharePoint & jQuery - What I wish I would have knownSPSDenver - SharePoint & jQuery - What I wish I would have known
SPSDenver - SharePoint & jQuery - What I wish I would have known
 
Html css crash course may 11th, atlanta
Html css crash course may 11th, atlantaHtml css crash course may 11th, atlanta
Html css crash course may 11th, atlanta
 
Html:css crash course (4:5)
Html:css crash course (4:5)Html:css crash course (4:5)
Html:css crash course (4:5)
 
Thinkful - Frontend Crash Course - Intro to HTML/CSS
Thinkful - Frontend Crash Course - Intro to HTML/CSSThinkful - Frontend Crash Course - Intro to HTML/CSS
Thinkful - Frontend Crash Course - Intro to HTML/CSS
 
SUG Bangalore - Overview of Sitecore Experience Accelerator with Pratik Satik...
SUG Bangalore - Overview of Sitecore Experience Accelerator with Pratik Satik...SUG Bangalore - Overview of Sitecore Experience Accelerator with Pratik Satik...
SUG Bangalore - Overview of Sitecore Experience Accelerator with Pratik Satik...
 
Code & Design your first website 4/18
Code & Design your first website 4/18Code & Design your first website 4/18
Code & Design your first website 4/18
 
Web 101 intro to html
Web 101  intro to htmlWeb 101  intro to html
Web 101 intro to html
 
PLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring SurfPLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring Surf
 
SPTechCon - Share point and jquery essentials
SPTechCon - Share point and jquery essentialsSPTechCon - Share point and jquery essentials
SPTechCon - Share point and jquery essentials
 
Color Me Flexible
Color Me FlexibleColor Me Flexible
Color Me Flexible
 
Browser Developer Tools for APEX Developers
Browser Developer Tools for APEX DevelopersBrowser Developer Tools for APEX Developers
Browser Developer Tools for APEX Developers
 
SharePoint Saturday St. Louis - SharePoint & jQuery
SharePoint Saturday St. Louis - SharePoint & jQuerySharePoint Saturday St. Louis - SharePoint & jQuery
SharePoint Saturday St. Louis - SharePoint & jQuery
 
SharePoint & jQuery Guide - SPSTC 5/18/2013
SharePoint & jQuery Guide - SPSTC 5/18/2013 SharePoint & jQuery Guide - SPSTC 5/18/2013
SharePoint & jQuery Guide - SPSTC 5/18/2013
 
Responsive themeworkshop wcneo2016
Responsive themeworkshop wcneo2016Responsive themeworkshop wcneo2016
Responsive themeworkshop wcneo2016
 
網頁程式設計
網頁程式設計網頁程式設計
網頁程式設計
 
Keep Your Code Organized! WordCamp Montreal 2013 Presentation slides
Keep Your Code Organized! WordCamp Montreal 2013 Presentation slidesKeep Your Code Organized! WordCamp Montreal 2013 Presentation slides
Keep Your Code Organized! WordCamp Montreal 2013 Presentation slides
 
HTML5: It goes to ELEVEN
HTML5: It goes to ELEVENHTML5: It goes to ELEVEN
HTML5: It goes to ELEVEN
 
Sitecore Experience Accelerator (SxA)
Sitecore Experience Accelerator (SxA)Sitecore Experience Accelerator (SxA)
Sitecore Experience Accelerator (SxA)
 
SXA in action
SXA in actionSXA in action
SXA in action
 

Ähnlich wie JSLink for ITPros - SharePoint Saturday Jersey

SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...
SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...
SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...
BIWUG
 
5 Common Mistakes You are Making on your Website
 5 Common Mistakes You are Making on your Website 5 Common Mistakes You are Making on your Website
5 Common Mistakes You are Making on your Website
Acquia
 
The things we found in your website
The things we found in your websiteThe things we found in your website
The things we found in your website
hernanibf
 
Custom Development for SharePoint
Custom Development for SharePointCustom Development for SharePoint
Custom Development for SharePoint
Talbott Crowell
 

Ähnlich wie JSLink for ITPros - SharePoint Saturday Jersey (20)

SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...
SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...
SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...
 
SPSSTHLM - Using JSLink and Display Templates for ITPros
SPSSTHLM - Using JSLink and Display Templates for ITProsSPSSTHLM - Using JSLink and Display Templates for ITPros
SPSSTHLM - Using JSLink and Display Templates for ITPros
 
Using js link and display templates
Using js link and display templatesUsing js link and display templates
Using js link and display templates
 
Nsc 2013 06-17 - random rants on 2013
Nsc 2013 06-17 - random rants on 2013Nsc 2013 06-17 - random rants on 2013
Nsc 2013 06-17 - random rants on 2013
 
#SPSLondon - Session 1 - Building an faq for end users
#SPSLondon - Session 1 - Building an faq for end users#SPSLondon - Session 1 - Building an faq for end users
#SPSLondon - Session 1 - Building an faq for end users
 
Add-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his DutyAdd-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his Duty
 
presentation
presentationpresentation
presentation
 
presentation
presentationpresentation
presentation
 
Add-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his DutyAdd-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his Duty
 
Features, Exportables & You
Features, Exportables & YouFeatures, Exportables & You
Features, Exportables & You
 
Creating an FAQ for end users, An evolution of an idea - SharePoint Saturday ...
Creating an FAQ for end users, An evolution of an idea - SharePoint Saturday ...Creating an FAQ for end users, An evolution of an idea - SharePoint Saturday ...
Creating an FAQ for end users, An evolution of an idea - SharePoint Saturday ...
 
5 Common Mistakes You are Making on your Website
 5 Common Mistakes You are Making on your Website 5 Common Mistakes You are Making on your Website
5 Common Mistakes You are Making on your Website
 
Intro to Branding by Randy Drisgill and John Ross - SPTechCon
Intro to Branding by Randy Drisgill and John Ross - SPTechConIntro to Branding by Randy Drisgill and John Ross - SPTechCon
Intro to Branding by Randy Drisgill and John Ross - SPTechCon
 
Pearls and Must-Have Tools for the Modern Web / .NET Developer
Pearls and Must-Have Tools for the Modern Web / .NET DeveloperPearls and Must-Have Tools for the Modern Web / .NET Developer
Pearls and Must-Have Tools for the Modern Web / .NET Developer
 
SharePoint 2013 Sandbox Solutions for On Premise or Office 365
SharePoint 2013 Sandbox Solutions for On Premise or Office 365SharePoint 2013 Sandbox Solutions for On Premise or Office 365
SharePoint 2013 Sandbox Solutions for On Premise or Office 365
 
The things we found in your website
The things we found in your websiteThe things we found in your website
The things we found in your website
 
Envision IT - Application Lifecycle Management for SharePoint in the Enterprise
Envision IT - Application Lifecycle Management for SharePoint in the EnterpriseEnvision IT - Application Lifecycle Management for SharePoint in the Enterprise
Envision IT - Application Lifecycle Management for SharePoint in the Enterprise
 
Ui devopler
Ui devoplerUi devopler
Ui devopler
 
Custom Development for SharePoint
Custom Development for SharePointCustom Development for SharePoint
Custom Development for SharePoint
 
Drew madelung sp designer workflows - sp-biz
Drew madelung   sp designer workflows - sp-bizDrew madelung   sp designer workflows - sp-biz
Drew madelung sp designer workflows - sp-biz
 

Mehr von Paul Hunt

Mehr von Paul Hunt (9)

Exploring conditional access to content stored in Office 365 - SPS Helsinki
Exploring conditional access to content stored in Office 365 - SPS HelsinkiExploring conditional access to content stored in Office 365 - SPS Helsinki
Exploring conditional access to content stored in Office 365 - SPS Helsinki
 
Exploring conditional access to content stored in office 365 spsce
Exploring conditional access to content stored in office 365   spsceExploring conditional access to content stored in office 365   spsce
Exploring conditional access to content stored in office 365 spsce
 
Exploring conditional access to content stored in Office 365
Exploring conditional access to content stored in Office 365Exploring conditional access to content stored in Office 365
Exploring conditional access to content stored in Office 365
 
What do you mean 90 days isnt enough
What do you mean 90 days isnt enoughWhat do you mean 90 days isnt enough
What do you mean 90 days isnt enough
 
Spsnl18 exploring identity management options in office 365
Spsnl18   exploring identity management options in office 365Spsnl18   exploring identity management options in office 365
Spsnl18 exploring identity management options in office 365
 
Spunite exploring identity management options in office 365
Spunite   exploring identity management options in office 365Spunite   exploring identity management options in office 365
Spunite exploring identity management options in office 365
 
Making auditing great again! Office 365
Making auditing great again! Office 365Making auditing great again! Office 365
Making auditing great again! Office 365
 
SPSBE building an faq for end users
SPSBE building an faq for end usersSPSBE building an faq for end users
SPSBE building an faq for end users
 
Iw411 migrating content by search from 2010 into 2013 - minified
Iw411   migrating content by search from 2010 into 2013 - minifiedIw411   migrating content by search from 2010 into 2013 - minified
Iw411 migrating content by search from 2010 into 2013 - minified
 

Kürzlich hochgeladen

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Kürzlich hochgeladen (20)

Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 

JSLink for ITPros - SharePoint Saturday Jersey

  • 1. Using JSLink and Display Templates with the List View Web Part for ITPros #SPSJE Paul Hunt Solutions Architect Trinity @Cimares www.myfatblog.c o.uk
  • 2. Who Am I? • SharePoint Architect for Trinity Expert Systems • Co-organiser of SUGUK London Region • Member of the SharePoint community since 2007 • In my spare time I’m a woodturner, making Pots, Pens and artistic pieces! • Paul Hunt • Twitter: @Cimares • www.myfatblog.co.uk • www.trinityservice.co. uk
  • 3. What is this session all about? • The List View Web Part
  • 4. Who’s this session for? • Primarily First/Second tier developers • ITPros who customised 2010 list views in SPD • ITPros that used to write their own XSLT in SP2010 • Developers that want to know what's available before opening VS2012 • On Premises or Office 365 Deployments • Might not be ideal for someone who isn’t comfortable with JavaScript, HTML and CSS. – Though if you used to play in SPD 2010 you’re halfway there! – If you want to know what's achievable without deployed solutions
  • 5.
  • 6.
  • 7. What did we used to do? • We used SPD and the Design View • We did conditional formatting • Played with colours • Injected Hyperlinks
  • 8. What did we used to do? • But • No design view anymore!
  • 9. What did we used to do? • We used XSLT Overrides (Still exist, but deprecated!)
  • 10. What did we used to do? • We used XSLT Overrides (Still exist, but deprecated!) • Which took boring list data views
  • 11. What did we used to do? • We used XSLT Overrides (Still exist, but deprecated!) • And transformed them into engaging visual representations
  • 12. What did we used to do? • We used custom code solutions (We still can!) • Custom CAML Rendering Templates • Custom List Views • Custom Web Parts • All bring additional headaches
  • 13. So why the focus on Client Side Rendering?
  • 14. So why the focus on Client Side Rendering? • It’s client side, moving the impact of customisations off of the web server and onto the often powerful and under utilised client machine SETI@Home Folding@Home
  • 15. So why the focus on Client Side Rendering? • It’s client side, moving the impact of customisations off of the web server and onto the often powerful and under utilised client machine • Some client machines may struggle with heavy Javascript loads!
  • 16. Specifically why JavaScript, HTML and CSS? • It’s easier to develop.. • Much simpler than XSLT • Certainly easier to troubleshoot than XSLT • Likely to have the skills in house • Cross-platform (ish!) • Some frameworks such as jQuery help with this
  • 17.
  • 18. Exactly what is a JavaScript Display Template? • A small piece of JavaScript code that is called by the browser AFTER the page has been delivered. • They are prolific in SharePoint 2013 • Some examples • Search Results • Field Rendering • Search Refiners • List Forms • List views • eDiscovery
  • 19. Display Template Content Types • There are 5 Content Types that represent display templates. • JavaScript Display Template • Control Display Template • Group Display Template • Item Display Template • Filter Display Template These 4 relate to Search.
  • 20.
  • 21. LVWP Templates != Search Display Templates • LVWP Display Templates are JavaScript only. • They do not start life as HTML like Display Templates for search do. • They do not require embedded properties. • CONTEXT (ctx) is king! 21
  • 22. We’re just looking at:- • List View Display Templates • These provide the ability to override the rendering of an entire view • Field Rendering Display Templates • These provide the ability to override the rendering of a single field in a list view
  • 23. Page Lifecycle – The Foundations
  • 24. Page lifecycle – The Foundations • SharePoint outputs JSLink in the Header of the page • This registers our Display Template
  • 25. Page lifecycle – The Foundations • SharePoint LVWP outputs the list data into the page • JSON Object Format
  • 26. Page lifecycle – The Foundations • And finally after setting things up • Calls the RenderListView() function for the web part. • Which in turn: – Calls the GetTemplates()
  • 27. Page lifecycle – The Result • Which compares the Context object to the list of registered overrides • And if everything is in place, our override wins the battle!
  • 28.
  • 29. ###CALLOUT – Internal Name Pain The_x0020_number_x0020_of_x0020_
  • 30. ###CALLOUT – Internal Name Pain • Internal names get encoded once, then URL encoded when displayed in the browser adding to the confusion! • The internal name of: The_x0020_number_x0020_of_x0020_ • Is actually displayed in the browser as :- The%5Fx0020%5Fnumber%5Fx0020%5Fof%5Fx0020%5F • Special characters such as & add to the fun!
  • 31. ###CALLOUT – Internal Name Pain • Multiple long field names lose meaning • The_x0020_number_x0020_of_x0020_ • The_x0020_number_x0020_of_x0020_0
  • 32. ###CALLOUT – Internal Name Pain • Creating your fields carefully will save you this pain! Create Renam e
  • 33. ###CALLOUT – Internal Name Pain • SharePoint 2013 introduces some new pain with the quick edit list functionality.
  • 34. ###CALLOUT – Internal Name Pain • I’m not a Dev, why do I care?
  • 35. ###CALLOUT – Internal Name Pain • I’m not a Dev, why do I care? • Your Developers (if you have them) will love you!
  • 36.
  • 37. Anatomy of a List View Display Template • Start with an empty .JS (Or copy example templates) • Define a Function to register the Display Template • Define the Function called by the Display Template for each item. • Call the register function (This is processed when the DT is loaded)
  • 38. Anatomy of a List View Display Template • Define a Function to register the Display Template For a list of template types see - http://bit.ly/169AbS9
  • 39. Anatomy of a List View Display Template • Define the Function called by the Display Template • Note the use of ctx.CurrentItem.Title – Any field in the view can be obtained this way – You must use the internal name • Obtained from the edit column screen – Beware the double encoding issue! • Or using the browser debugger
  • 40. Anatomy of a List View Display Template • Call the function we defined when the page loads.
  • 41. Anatomy of a Field Rendering Display Template • All that really changes is the override set-up • This time there are no headers/footers • We only specify the Base View ID/Field Name
  • 42. Anatomy of a Field Rendering Display Template • The render function is similar to the list view item function
  • 43. How do we use them with List Views? • First we need to upload/create them in the MasterPage gallery
  • 44. How do we use them with List Views? • Set some metadata
  • 45. How do we use them with List Views? • Add a link into the JSLink on the web part • Note the ~token in use – ~sitecollection – ~site – ~layouts – ~sitecollectionlayouts – ~sitelayouts • You can have multiple JSLinks – Join them with |
  • 46.
  • 47. How do we troubleshoot? • IE Developers Toolbar (Other debuggers exist!)
  • 48. How do we troubleshoot? • Fiddler – HTTP Proxy
  • 49. How do we troubleshoot? • Fiddler – HTTP Proxy
  • 51. There has to be a catch? • Minimal Download Strategy • Multiple list views on a page • Changing SharePoint functionality
  • 52. There has to be a catch? • Minimal Download Strategy • Our display templates work on page load • But fail during a refresh. • This is because our JavaScript doesn’t get called a second time • Two workarounds! • Turn off the Minimal Download Feature in each Web • Include the relevant JavaScript in your Display Template code
  • 53. There has to be a catch? • Multiple list views on a page • Because of the way Display Templates are registered, it’s not possible to have two on the page if the list templates are the same. (E.g. Custom TemplateType = 100) • There is a workaround though published on my blog • http://bit.ly/JSLinkIssues
  • 54. There has to be a catch? • Changing/Breaking SharePoint functionality • For example, overriding the Tasks view breaks SharePoint rendering. • This is fixed in the earlier Field demo with a couple of lines of JavaScript.
  • 55.
  • 57. #SPCSR • www.facebook.com/hashspcsr • https://github.com/spcsr
  • 58. Call to Action! • Take a look at these sites for more detailed info • Wes Preston – JS Link a primer - http://bit.ly/102fcNa • Martin Hatch – JSLink 7 part series - http://bit.ly/Hh5zFk • My blog • Solving the multiple list view issue - http://bit.ly/JSLinkIssues • Editing local JS files using fiddler - http://bit.ly/EditUsingFiddler 58
  • 59. Don’t forget SharePint! • SHARE·PINT: [SHAIR-PAHYNT] Noun 1. An assembly or meeting in relation to Microsoft SharePoint, accompanied with an alcoholic beverage.
  • 60. Thank You! Raffle Prizes at 16:00 1st #SharePint in the Hotel Bar sponsored by Cloudshare 16:30

Hinweis der Redaktion

  1. I also do woodturning! SharePoint can be a lot like woodturning.. If you don’t pay attention to what you’re doing, it’s easy to make a mistake and go through the bottom of the bowl!
  2. This session is all about dropping a list view web part on the page and doing something visually with it using the tools that Microsoft provide and no serious custom development. A lot of what you see about display templates on the web is all about the Search Web Parts.. We’re not looking at those today!
  3. We’re targeting First/Second Tier developers.. That’s the UI and Client side to you and me.. You’ll need to know Javascript, HTML and CSS.. But not a lot, start small and work up!
  4. Primarily we worked server side Though Marc Anderson and others championed what could be done client side with jQuery and similar
  5. The design view has now gone. Lots of discussion as to why. Can’t now use (in visual design mode):- the conditional format builder The xPath expression builder Web part connections Web Part filters
  6. We did use XSLT over rides Difficult to troubleshoot A single wrong character could break the rendering! Very difficult to troubleshoot without access to the ULS logs (Or even with the logs!)
  7. This example is a project status dashboard, fed from a project list.
  8. But these bring their own headaches. Deployment, Support Upgrades
  9. In my opinion it’s about the cloud. MS wants to offer a platform that’s scalable. Moving the customisations as far away from that platform makes sense..
  10. A large majority of Business and Home PC’s spend a massive amount of their time doing nothing. Several large Grid computing projects rely on this Notably Folding@Home looking at causes of Cancer and other Degenerative diseases. And Seti@Home searching Radio Telescope signals for signs of ET!
  11. Warning though, Some small format PC’s may struggle. I’ve had personal issues with ARM processor based systems
  12. Cross-platform: Some browsers have different ways of handling some javascript. The use of jQuery helps alleviate this
  13. You can find them in the MasterPage catalog /Display Templates subfolder
  14. Note: I added this page after the Stockholm event in response to a question that was posed to me after the event. List View Display Templates are JavaScript from start to finish. There is no requirement to embed the properties in the same way (But the field you want MUST be in the list view!). Everything you need should be available through the CTX context object passed in when called.
  15. Before we jump into how a display template is created, a note on Field Naming! Create your fields with a sensible name first and edit afterwards. This creates a short internal name for use in scripts.
  16. Before we jump into how a display template is created, a note on Field Naming! Create your fields with a sensible name first and edit afterwards. This creates a short internal name for use in scripts.
  17. Note how the Space in names is encoded for the URL.. The actual internal name is The_x0020_number_x0020_of_x0020_
  18. Creating with a nice short name, and then renaming, retains the sensible internal name whilst keeping the users happy.
  19. SharePoint Quick edit, shown here creates all columns with a random 4 character name.. And even that isn’t safe from being encoded as I’ve found out to my cost!
  20. Note how the Space in names is encoded for the URL.. The actual internal name is The_x0020_number_x0020_of_x0020_
  21. Note how the Space in names is encoded for the URL.. The actual internal name is The_x0020_number_x0020_of_x0020_
  22. We’ll go through each step in the next few slides.
  23. BaseViewID & ListTemplateType both used to match the template required Loaded when the page is first processed.
  24. This function is called for EACH item the list will render. E.g. If you have a list view with 20 items, this function will run 20 times and each time ctx.CurrentItem will the next item in the list. Note: Fields called in the view MUST be selected when the view is created. Note: Field internal names that include encoded characters will be URL encoded too… A space becomes %5Fx0020%5F which is actually an internal name of _x0020_ (See next couple of slides!)
  25. We call our register function at the in the main script file. This ensures our functions are called.
  26. We only base this on BaseViewID, ListTemplateType has no impact The field name is specified in the Templates collection Note: We’re only affecting the View mode here.. But you can do Edit too.
  27. .
  28. You can do this directly through the UI, Or in SPD 2013, but they don’t have to be! File system, Asset library… anything works..
  29. This is good practice.. But not essential..they will work anyway! This just ensures they show up in the right place in Designer mostly!
  30. You can define List Views with JSLinks, or add them through PowerShell Tokens courtesy of Martin Hatch’s blog ~site – reference to the current SharePoint site (or “Web”) ~sitecollection – reference to the current SharePoint site collection (or “Site”) ~layouts – version specific reference to the web application Layouts folder (so it will automatically swap out /_layouts/14 or /_layouts/15 for you) ~sitecollectionlayouts – reference to the layouts folder in the current site collection (e.g. /sites/team/_layouts/15) ~sitelayouts – reference to the layouts folder in the current site (e.g. /sites/teams/subsite/_layouts/15)
  31. Setting up the Field render on SPSUK Tasks. ~sitecollection/_catalogs/masterpage/Display Templates/csr_ovr_PercentComplete_Field.js
  32. Open the Developers Toolbar with F12 Switch to the Script tag Select the drop down near the “Start Debugging” button Select our template file Start Debugging
  33. In the normal flow, IE makes the request directly to SharePoint. Fiddler injects itself as a proxy between your browser requests and the outbound network connection. This allows us to inspect and event alter the requests and responses being made
  34. If time..one of the other benefits of fiddler is off-line editing. Using auto-responders, fiddler can return a LOCAL file instead of the server file. This can be a local copy of your display template that you are editing, thus NOT affecting the live site, but Working with live data.
  35. Using the demo we created earlier, we’ll show how to trap the code and step through. Shortcut leads to - http://msdn.microsoft.com/library/ie/bg182326(v=vs.85) The F12 developer tools site.
  36. Martin Hatches blog has more details on some of the other breaking issues with Display templates.
  37. If plenty of time (show the multiple list view issues) Tasks (If not done already) Average Temps (Charting) Belgian Beers – Styling, linked webparts, broken webparts Belgian Beers – Set in powershell About My Team Game Shows Office 365
  38. SPCSR – A community source of display templates