{"id":2660,"date":"2019-06-10T10:44:46","date_gmt":"2019-06-10T09:44:46","guid":{"rendered":"http:\/\/www.donatantonio.net\/blog\/?p=2660"},"modified":"2019-06-10T10:44:46","modified_gmt":"2019-06-10T09:44:46","slug":"scroll-verticale-in-una-jquery-datatables","status":"publish","type":"post","link":"https:\/\/www.donatantonio.net\/blog\/tipsetricks\/scroll-verticale-in-una-jquery-datatables\/","title":{"rendered":"Scroll verticale in una jQuery DataTables"},"content":{"rendered":"<p>Abbiamo gi\u00e0 visto come <a href=\"http:\/\/www.donatantonio.net\/blog\/tipsetricks\/una-tabella-con-il-plug-in-jquery-datatables\/\">creare velocemente una tabella con jQuery DataTables<\/a>, e come <a href=\"http:\/\/www.donatantonio.net\/blog\/tipsetricks\/rimuovere-paginazione-in-una-jquery-datatables\/\">disabilitare la paginazione di default<\/a>.<br \/>\nUn utile opzione del plug-in \u00e8 quella che permette di navigare la tabella con un comodo <strong>scroll verticale<\/strong> all&#8217;interno del body della stessa. In altre parole \u00e8 possibile effettuare lo scroll del body della tabella senza dover interagire con la scrollbar del browser.<\/p>\n<p><a href=\"http:\/\/www.donatantonio.net\/blog\/wp-content\/uploads\/2019\/06\/datatable_scrollY_scroll_verticale.png\"><img loading=\"lazy\" class=\"aligncenter size-full wp-image-2665\" src=\"http:\/\/www.donatantonio.net\/blog\/wp-content\/uploads\/2019\/06\/datatable_scrollY_scroll_verticale.png\" alt=\"DataTable scrollY - Scroll verticale\" width=\"899\" height=\"450\" srcset=\"https:\/\/www.donatantonio.net\/blog\/wp-content\/uploads\/2019\/06\/datatable_scrollY_scroll_verticale.png 899w, https:\/\/www.donatantonio.net\/blog\/wp-content\/uploads\/2019\/06\/datatable_scrollY_scroll_verticale-300x150.png 300w, https:\/\/www.donatantonio.net\/blog\/wp-content\/uploads\/2019\/06\/datatable_scrollY_scroll_verticale-768x384.png 768w\" sizes=\"(max-width: 899px) 100vw, 899px\" \/><\/a><br \/>\nL&#8217;opzione da utilizzare per attivare la funzione \u00e8 denominata <strong>scrollY <\/strong>e come unico parametro richiede un valore per l&#8217;<em>altezza del tbody<\/em>. Il valore pu\u00f2 essere espresso in pixel o in qualsiasi altra unit\u00e0 di misura accettata da CSS (px, em, pt, cm, etc..) e va racchiusa tra apici singoli o doppi.<\/p>\n<p>Se ad esempio volessimo impostare uno <strong>scrollY<\/strong> di <strong>200px<\/strong> dovremmo scrivere:<\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n&lt;script type=&quot;text\/javascript&quot;&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 $('#idTabella').DataTable({\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &quot;paging&quot;: false,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &quot;scrollCollapse&quot;: true,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &quot;scrollY&quot;: '200px',\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &quot;language&quot;: {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &quot;url&quot;: &quot;\/\/cdn.datatables.net\/plug-ins\/1.10.19\/i18n\/Italian.json&quot;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 });\r\n&lt;\/script&gt;\r\n<\/pre>\n<p>E&#8217; consigliabile utilizzare l&#8217;opzione scrollY con <em>paginazione disattivata<\/em> (<strong>paging: false<\/strong>) anche se lo scroll \u00e8 accettato anche in presenza di una paginazione.<\/p>\n<p><strong>E come calcolare un valore &#8220;giusto&#8221; per lo scrollY di DataTable?<\/strong><br \/>\nE&#8217; consuetudine adattare l&#8217;altezza della DataTable allo <em>spazio presente nella finestra del browser<\/em>; in pratica risulta necessario a volte calcolare <em>dinamicamente<\/em> il valore da assegnare a scrollY in base alla risoluzione del browser dell&#8217;utente e allo spazio occupato da altri elementi nella pagina.<br \/>\nUn esempio classico pu\u00f2 essere una tabella preceduta da una navbar contenente ad esempio delle tendine di selezione oppure altri elementi di input; in questo caso per rendere dinamica l&#8217;altezza dello scrollY e sfruttare lo spazio presente a video \u00e8 necessario ricorrere a <em>jQuery<\/em> ed effettuare <em>alcuni semplici calcoli<\/em>.<br \/>\n<strong>Ipotizzando<\/strong> che prima della tabella, ad esempio, ci siano contenuti in navbar per <em>250px<\/em> \u00e8 possibile calcolare il valore assegnabile allo scroll utilizzando il metodo <em>height()<\/em> di jQuery sulla finestra del browser e sottraendo ad esso i 250px superiori:<\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\nvar hScroll = $(window).height() - 250;\r\n<\/pre>\n<p>In questo modo \u00e8 possibile poi assegnare il valore calcolato come parametro dell&#8217;opzione <em>scrollY<\/em> di DataTable:<\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n&lt;script type=&quot;text\/javascript&quot;&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 var hScroll = $(window).height() - 250;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 $('#idTabella').DataTable({\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &quot;paging&quot;: false,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &quot;scrollCollapse&quot;: true,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &quot;scrollY&quot;: hScroll,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &quot;language&quot;: {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &quot;url&quot;: &quot;\/\/cdn.datatables.net\/plug-ins\/1.10.19\/i18n\/Italian.json&quot;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 });\r\n&lt;\/script&gt;\r\n<\/pre>\n<p>Ecco la nostra tabella jQuery DataTables <strong>con uno scroll verticale di 200px<\/strong>:<\/p>\n<p><iframe src=\"http:\/\/www.donatantonio.net\/Tips_Tricks\/datatables_vertical_scroll\/\" width=\"100%\" height=\"350px\" frameborder=\"0\"><\/iframe><\/p>\n<p><strong>Scarica il codice completo <a href=\"http:\/\/www.donatantonio.net\/Tips_Tricks\/DataTables - Vertical Scroll - scrollY.zip\">cliccando qui<\/a>.<br \/>\nScopri altri <a href=\"http:\/\/www.donatantonio.net\/blog\/category\/tipsetricks\/\">Tips &amp; Tricks<\/a>.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Abbiamo gi\u00e0 visto come creare velocemente una tabella con jQuery DataTables, e come disabilitare la paginazione di default.<br \/>\nUn utile opzione del plug-in \u00e8 quella che permette di navigare la tabella con un comodo scroll verticale all&#8217;interno del body della stessa. In altre parole \u00e8 possibile effettuare lo scroll del body della tabella senza dover interagire con la scrollbar del browser.<\/p>\n<p>\nL&#8217;opzione da utilizzare per attivare la funzione \u00e8 denominata scrollY e come unico parametro richiede un valore per l&#8217;<em>altezza del tbody<\/em>. Il valore pu\u00f2 essere espresso in pixel o in qualsiasi altra unit\u00e0 di misura accettata da CSS (px, em, pt, cm, etc..) e va racchiusa tra apici singoli o doppi.<\/p>\n<p>Se ad esempio volessimo impostare uno scrollY di 200px dovremmo scrivere:<\/p>\n<p>&lt;script type=&quot;text\/javascript&quot;&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0 $(&#8216;#idTabella&#8217;).DataTable({<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &quot;paging&quot;: false,<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &quot;scrollCollapse&quot;: true,<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &quot;scrollY&quot;: &#8216;200px&#8217;,<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &quot;language&quot;: {<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &quot;url&quot;: &quot;\/\/cdn.datatables.net\/plug-ins\/1.10.19\/i18n\/Italian.json&quot;<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0 });<br \/>\n&lt;\/script&gt;<\/p>\n<p>E&#8217; consigliabile utilizzare l&#8217;opzione scrollY con <em>paginazione disattivata<\/em> (paging: false) anche se lo scroll \u00e8 accettato anche in presenza di una paginazione.<\/p>\n<p>E come calcolare un valore &#8220;giusto&#8221; per lo scrollY di DataTable?<br \/>\nE&#8217; consuetudine adattare l&#8217;altezza della DataTable allo <em>spazio presente nella finestra del browser<\/em>; in pratica risulta necessario a volte calcolare <em>dinamicamente<\/em> il valore da assegnare a scrollY in base alla risoluzione del browser dell&#8217;utente e allo spazio occupato da altri elementi nella pagina.<br \/>\nUn esempio classico pu\u00f2 essere una tabella preceduta da una navbar contenente ad esempio delle tendine di selezione oppure altri elementi di input; in questo caso per rendere dinamica l&#8217;altezza dello scrollY e sfruttare lo spazio presente a video \u00e8 necessario ricorrere a <em>jQuery<\/em> ed effettuare <em>alcuni semplici calcoli<\/em>.<br \/>\nIpotizzando che prima della tabella, ad esempio, ci siano contenuti in navbar per <em>250px<\/em> \u00e8 possibile calcolare il valore assegnabile allo scroll utilizzando il metodo <em>height()<\/em> di jQuery sulla finestra del browser e sottraendo ad esso i 250px superiori:<\/p>\n<p>var hScroll = $(window).height() &#8211; 250;<\/p>\n<p>In questo modo \u00e8 possibile poi assegnare il valore calcolato come parametro dell&#8217;opzione <em>scrollY<\/em> di DataTable:<\/p>\n<p>&lt;script type=&quot;text\/javascript&quot;&gt;<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0 var hScroll = $(window).height() &#8211; 250;<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0 $(&#8216;#idTabella&#8217;).DataTable({<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &quot;paging&quot;: false,<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &quot;scrollCollapse&quot;: true,<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &quot;scrollY&quot;: hScroll,<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &quot;language&quot;: {<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &quot;url&quot;: &quot;\/\/cdn.datatables.net\/plug-ins\/1.10.19\/i18n\/Italian.json&quot;<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0 });<br \/>\n&lt;\/script&gt;<\/p>\n<p>Ecco la nostra tabella jQuery DataTables con uno scroll verticale di 200px:<\/p>\n<\/p>\n<p>Scarica il codice completo cliccando qui.<br \/>\nScopri altri Tips &amp; Tricks.<\/p>\n","protected":false},"author":1,"featured_media":2665,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[505],"tags":[537,535,536,534,538],"_links":{"self":[{"href":"https:\/\/www.donatantonio.net\/blog\/wp-json\/wp\/v2\/posts\/2660"}],"collection":[{"href":"https:\/\/www.donatantonio.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.donatantonio.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.donatantonio.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.donatantonio.net\/blog\/wp-json\/wp\/v2\/comments?post=2660"}],"version-history":[{"count":6,"href":"https:\/\/www.donatantonio.net\/blog\/wp-json\/wp\/v2\/posts\/2660\/revisions"}],"predecessor-version":[{"id":2667,"href":"https:\/\/www.donatantonio.net\/blog\/wp-json\/wp\/v2\/posts\/2660\/revisions\/2667"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.donatantonio.net\/blog\/wp-json\/wp\/v2\/media\/2665"}],"wp:attachment":[{"href":"https:\/\/www.donatantonio.net\/blog\/wp-json\/wp\/v2\/media?parent=2660"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.donatantonio.net\/blog\/wp-json\/wp\/v2\/categories?post=2660"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.donatantonio.net\/blog\/wp-json\/wp\/v2\/tags?post=2660"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}