Articles about European Sharepoint Hosting Service
SharePoint Hosting – Display SharePoint List Or Library Items Using DataTable JS
DataTables JS, advanced interaction controls to your HTML tables is free, open-source software that you can download and use for whatever purpose you wish, on any and as many sites you want.
Let’s get started.
The Application
As I displayed the demo GIF, based on the user confirmation in the alert box DataTable is generated.
Step 1 – Building the UI
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<!DOCTYPE html> <html> <head> <link rel="stylesheet" href="../SiteAssets/style.css"> </head> <body> <div id="tableDiv"> <p id="toDisplay"></p> <table id="EmployeeListID"> </table> </div> </body> </html> |
Step 2 – The CDN files
Here, I’m referring to Bootstrap 5
1 2 3 4 5 6 |
<link href="https://cdn.datatables.net/1.11.3/css/jquery.dataTables.min.css" rel="stylesheet" type="text/css"> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" type="text/css"> <link href="https://cdn.datatables.net/1.11.3/css/dataTables.bootstrap.min.css" rel="stylesheet" type="text/css"> <script src="https://code.jquery.com/jquery-3.5.1.js" type="text/javascript"></script> <script src="https://cdn.datatables.net/1.11.3/js/jquery.dataTables.min.js" type="text/javascript"></script> <script src="https://cdn.datatables.net/1.11.3/js/dataTables.bootstrap.min.js" type="text/javascript"></script> |
Step 3 – Onload Event
Call the function using the onload event attribute in the <script> tag. Like below,
1 |
<span class="token operator"><</span>script src<span class="token operator">=</span><span class="token string">"../SiteAssets/script.js"</span> onload<span class="token operator">=</span><span class="token string">"getUsingRest()"</span><span class="token operator">></span><span class="token operator"><</span><span class="token operator">/</span>script<span class="token operator">></span> |
As the function name says, data is loaded using the REST API Get method.
Alternative Method: Load data using Fetch API (to demonstrate fetch API to get items from SharePoint List/Library).
Step 4 – The GET Method
Define the query URL for List and Library.
Start with the confirm alert, which prompts the user to select OK/Cancel, which returns true for Ok and false for cancel.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<span class="token keyword keyword-var">var</span> queryURL <span class="token operator">=</span> _spPageContextInfo<span class="token punctuation">.</span><span class="token property-access">webAbsoluteUrl</span> <span class="token operator">+</span> <span class="token string">"/_api/web/lists/GetByTitle('EmployeesList')/items"</span><span class="token punctuation">;</span> <span class="token keyword keyword-var">var</span> queryURLLib <span class="token operator">=</span> _spPageContextInfo<span class="token punctuation">.</span><span class="token property-access">webAbsoluteUrl</span> <span class="token operator">+</span> <span class="token string">"/_api/web/lists/getbytitle('EmployeeDocuments')/items?$select=FileLeafRef,FileRef,Created,Author/ID,Author/Title&$expand=Author/ID,Author/Title"</span><span class="token punctuation">;</span> <span class="token keyword keyword-function">function</span> <span class="token function">getUsingRest</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword keyword-var">var</span> confirmVal <span class="token operator">=</span> <span class="token function">confirm</span><span class="token punctuation">(</span><span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">Select Ok to display "Document Library"\n\nSelect Cancel to display "List"</span><span class="token template-punctuation string">`</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword control-flow keyword-if">if</span><span class="token punctuation">(</span>confirmVal <span class="token operator">===</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword keyword-var">var</span> getURL <span class="token operator">=</span> queryURLLib<span class="token punctuation">;</span> <span class="token keyword keyword-var">var</span> toDisplay <span class="token operator">=</span> <span class="token string">'Document Library'</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword control-flow keyword-else">else</span><span class="token punctuation">{</span> <span class="token keyword keyword-var">var</span> getURL <span class="token operator">=</span> queryURL<span class="token punctuation">;</span> <span class="token keyword keyword-var">var</span> toDisplay <span class="token operator">=</span> <span class="token string">'List'</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> |
In the success function, call fnDisplayDataTable() method.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<span class="token keyword keyword-function">function</span> <span class="token function">getUsingRest</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword keyword-var">var</span> confirmVal <span class="token operator">=</span> <span class="token function">confirm</span><span class="token punctuation">(</span><span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">Select Ok to display "Document Library"\n\nSelect Cancel to display "List"</span><span class="token template-punctuation string">`</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword control-flow keyword-if">if</span><span class="token punctuation">(</span>confirmVal <span class="token operator">===</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword keyword-var">var</span> getURL <span class="token operator">=</span> queryURLLib<span class="token punctuation">;</span> <span class="token keyword keyword-var">var</span> toDisplay <span class="token operator">=</span> <span class="token string">'Document Library'</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword control-flow keyword-else">else</span><span class="token punctuation">{</span> <span class="token keyword keyword-var">var</span> getURL <span class="token operator">=</span> queryURL<span class="token punctuation">;</span> <span class="token keyword keyword-var">var</span> toDisplay <span class="token operator">=</span> <span class="token string">'List'</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> $<span class="token punctuation">.</span><span class="token method function property-access">ajax</span><span class="token punctuation">(</span><span class="token punctuation">{</span> url<span class="token operator">:</span> getURL<span class="token punctuation">,</span> method<span class="token operator">:</span> <span class="token string">"GET"</span><span class="token punctuation">,</span> headers<span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token string">"Accept"</span><span class="token operator">:</span> <span class="token string">"application/json; odata=verbose"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> async<span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span> <span class="token function-variable function">success</span><span class="token operator">:</span> <span class="token keyword keyword-function">function</span> <span class="token punctuation">(</span><span class="token parameter">data</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword keyword-let">let</span> items <span class="token operator">=</span> data<span class="token punctuation">.</span><span class="token property-access">d</span><span class="token punctuation">.</span><span class="token property-access">results</span><span class="token punctuation">;</span> <span class="token function">fnDisplayDataTable</span><span class="token punctuation">(</span>items<span class="token punctuation">,</span> toDisplay<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">// Datatable JS</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token function-variable function">error</span><span class="token operator">:</span> <span class="token keyword keyword-function">function</span> <span class="token punctuation">(</span><span class="token parameter">error</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token console class-name">console</span><span class="token punctuation">.</span><span class="token method function property-access">log</span><span class="token punctuation">(</span>error<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> |
Step 4(Alternative) – Using Fetch API
To know the basics of the fetch() method refer to my other post here.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<span class="token keyword keyword-var">var</span> queryURL <span class="token operator">=</span> _spPageContextInfo<span class="token punctuation">.</span><span class="token property-access">webAbsoluteUrl</span> <span class="token operator">+</span> <span class="token string">"/_api/web/lists/GetByTitle('EmployeesList')/items"</span><span class="token punctuation">;</span> <span class="token keyword keyword-var">var</span> queryURLLib <span class="token operator">=</span> _spPageContextInfo<span class="token punctuation">.</span><span class="token property-access">webAbsoluteUrl</span> <span class="token operator">+</span> <span class="token string">"/_api/web/lists/getbytitle('EmployeeDocuments')/items?$select=FileLeafRef,FileRef,Created,Author/ID,Author/Title&$expand=Author/ID,Author/Title"</span><span class="token punctuation">;</span> <span class="token keyword keyword-function">function</span> <span class="token function">getUsingFetch</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">//Confirm alert goes here</span> <span class="token keyword keyword-let">let</span> payload <span class="token operator">=</span> <span class="token punctuation">{</span> method<span class="token operator">:</span> <span class="token string">'GET'</span><span class="token punctuation">,</span> headers<span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token string">"Accept"</span><span class="token operator">:</span> <span class="token string">"application/json; odata=verbose"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> credentials<span class="token operator">:</span> <span class="token string">'same-origin'</span> <span class="token punctuation">}</span> <span class="token function">fetch</span><span class="token punctuation">(</span>queryURL<span class="token punctuation">,</span> payload<span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token method function property-access">then</span><span class="token punctuation">(</span><span class="token parameter">response</span> <span class="token arrow operator">=></span> response<span class="token punctuation">.</span><span class="token method function property-access">json</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token method function property-access">then</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token parameter">data</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span> <span class="token keyword keyword-let">let</span> items <span class="token operator">=</span> data<span class="token punctuation">.</span><span class="token property-access">d</span><span class="token punctuation">.</span><span class="token property-access">results</span><span class="token punctuation">;</span> <span class="token function">fnDisplayDataTable</span><span class="token punctuation">(</span>items<span class="token punctuation">,</span> <span class="token string">'List'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token punctuation">}</span> |
Step 5 – DataTable JS
Here I’m gonna create an array of objects for the columns with the data and title.
Where, data – List/Library internal name and title – Display Name
Sample syntax,
1 2 3 4 |
<span class="token keyword keyword-var">var</span> datatableColumns <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span>data<span class="token operator">:</span> <span class="token string">"Title"</span><span class="token punctuation">,</span> title<span class="token operator">:</span> <span class="token string">"Employee Full Name"</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>data<span class="token operator">:</span> <span class="token string">"Designation"</span><span class="token punctuation">,</span> title<span class="token operator">:</span> <span class="token string">"Designation"</span><span class="token punctuation">}</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> |
To format the column based on the requirement use render, a function returns with the formatted style.
Here to display the Author name which returns an array, the profile image, and the download link image I have used the render callback function.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
<span class="token keyword keyword-function">function</span> <span class="token function">fnDisplayDataTable</span><span class="token punctuation">(</span><span class="token parameter">tableData<span class="token punctuation">,</span> type</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword control-flow keyword-if">if</span><span class="token punctuation">(</span>type <span class="token operator">===</span> <span class="token string">'List'</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword keyword-var">var</span> datatableColumns <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span>title<span class="token operator">:</span> <span class="token string">"S. No"</span><span class="token punctuation">,</span> className<span class="token operator">:</span> <span class="token string">'dt-body-center'</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>data<span class="token operator">:</span> <span class="token string">"Title"</span><span class="token punctuation">,</span> title<span class="token operator">:</span> <span class="token string">"Employee Full Name"</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>data<span class="token operator">:</span> <span class="token string">"Designation"</span><span class="token punctuation">,</span> title<span class="token operator">:</span> <span class="token string">"Designation"</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>data<span class="token operator">:</span> <span class="token string">"ProfileImage"</span><span class="token punctuation">,</span> title<span class="token operator">:</span> <span class="token string">"Profile Image"</span><span class="token punctuation">,</span> className<span class="token operator">:</span> <span class="token string">'dt-body-center'</span><span class="token punctuation">,</span> <span class="token function-variable function">render</span><span class="token operator">:</span> <span class="token keyword keyword-function">function</span> <span class="token punctuation">(</span><span class="token parameter">data<span class="token punctuation">,</span> type<span class="token punctuation">,</span> row</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword control-flow keyword-return">return</span> <span class="token function">formatProfileImage</span><span class="token punctuation">(</span>data<span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword control-flow keyword-else">else</span><span class="token punctuation">{</span> <span class="token keyword keyword-var">var</span> datatableColumns <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span>title<span class="token operator">:</span> <span class="token string">"S. No"</span><span class="token punctuation">,</span> className<span class="token operator">:</span> <span class="token string">'dt-body-center'</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>data<span class="token operator">:</span> <span class="token string">"FileLeafRef"</span><span class="token punctuation">,</span> title<span class="token operator">:</span> <span class="token string">"Document"</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>data<span class="token operator">:</span> <span class="token string">"Author"</span><span class="token punctuation">,</span> title<span class="token operator">:</span> <span class="token string">"Modified By"</span><span class="token punctuation">,</span> className<span class="token operator">:</span> <span class="token string">'dt-body-center'</span><span class="token punctuation">,</span> <span class="token function-variable function">render</span><span class="token operator">:</span> <span class="token keyword keyword-function">function</span> <span class="token punctuation">(</span><span class="token parameter">data<span class="token punctuation">,</span> type<span class="token punctuation">,</span> row</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword control-flow keyword-return">return</span> <span class="token function">formatUser</span><span class="token punctuation">(</span>data<span class="token punctuation">)</span> <span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>data<span class="token operator">:</span> <span class="token string">"FileRef"</span><span class="token punctuation">,</span> title<span class="token operator">:</span> <span class="token string">"Download"</span><span class="token punctuation">,</span> className<span class="token operator">:</span> <span class="token string">'dt-body-center'</span><span class="token punctuation">,</span> <span class="token function-variable function">render</span><span class="token operator">:</span> <span class="token keyword keyword-function">function</span> <span class="token punctuation">(</span><span class="token parameter">data<span class="token punctuation">,</span> type<span class="token punctuation">,</span> row</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword control-flow keyword-return">return</span> <span class="token function">formatView</span><span class="token punctuation">(</span>data<span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token function">$</span><span class="token punctuation">(</span><span class="token string">'#EmployeeListID'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access"><span class="token maybe-class-name">DataTable</span></span><span class="token punctuation">(</span><span class="token punctuation">{</span> <span class="token string">"language"</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token string">"emptyTable"</span><span class="token operator">:</span> <span class="token string">"No Records available"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token string">"autoWidth"</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span> data<span class="token operator">:</span> tableData<span class="token punctuation">,</span> columns<span class="token operator">:</span> datatableColumns<span class="token punctuation">,</span> <span class="token string">"columnDefs"</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span> <span class="token string">"render"</span><span class="token operator">:</span> <span class="token keyword keyword-function">function</span> <span class="token punctuation">(</span><span class="token parameter">data<span class="token punctuation">,</span> type<span class="token punctuation">,</span> full<span class="token punctuation">,</span> meta</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> tableData<span class="token punctuation">[</span>meta<span class="token punctuation">.</span><span class="token property-access">row</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token property-access">id</span> <span class="token operator">=</span> meta<span class="token punctuation">.</span><span class="token property-access">row</span> <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">;</span> <span class="token comment">// adds id to dataset</span> <span class="token keyword control-flow keyword-return">return</span> meta<span class="token punctuation">.</span><span class="token property-access">row</span> <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">;</span> <span class="token comment">// adds id to serial no</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token string">"targets"</span><span class="token operator">:</span> <span class="token number">0</span> <span class="token punctuation">}</span><span class="token punctuation">]</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">$</span><span class="token punctuation">(</span><span class="token string">"#toDisplay"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">text</span><span class="token punctuation">(</span>type<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">$</span><span class="token punctuation">(</span><span class="token string">"#EmployeeListID th"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">css</span><span class="token punctuation">(</span><span class="token punctuation">{</span> <span class="token string">"text-align"</span><span class="token operator">:</span> <span class="token string">"center"</span><span class="token punctuation">,</span> <span class="token string">"background-color"</span><span class="token operator">:</span> <span class="token string">"#476f96"</span><span class="token punctuation">,</span> <span class="token string">"color"</span><span class="token operator">:</span> <span class="token string">"white"</span><span class="token punctuation">,</span> <span class="token string">"padding"</span><span class="token operator">:</span> <span class="token string">"5px"</span><span class="token punctuation">,</span> <span class="token string">"font-weight"</span><span class="token operator">:</span> <span class="token string">"400"</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword keyword-function">function</span> <span class="token function">formatProfileImage</span><span class="token punctuation">(</span><span class="token parameter">data</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword control-flow keyword-return">return</span> <span class="token string">'<img src="'</span> <span class="token operator">+</span> data <span class="token operator">+</span> <span class="token string">'" style="width:50px">'</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword keyword-function">function</span> <span class="token function">formatView</span><span class="token punctuation">(</span><span class="token parameter">data</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword control-flow keyword-return">return</span> <span class="token string">'<a href="'</span><span class="token operator">+</span>data<span class="token operator">+</span><span class="token string">'"><img src="../SiteAssets/download.png"></a>'</span> <span class="token punctuation">}</span> <span class="token keyword keyword-function">function</span> <span class="token function">formatUser</span><span class="token punctuation">(</span><span class="token parameter">data</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword control-flow keyword-return">return</span> <span class="token string">'<span>'</span><span class="token operator">+</span>data<span class="token punctuation">.</span><span class="token property-access"><span class="token maybe-class-name">Title</span></span><span class="token operator">+</span><span class="token string">'</span>'</span> <span class="token punctuation">}</span> |
Print article | This entry was posted by Peter on October 27, 2021 at 5:06 am, and is filed under European SharePoint 2013 Hosting. Follow any responses to this post through RSS 2.0. Both comments and pings are currently closed. |