1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
4 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
5 <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/media/images/favicon.ico" />
7 <title>DataTables example</title>
8 <style type="text/css" title="currentStyle">
9 @import "../../media/css/demo_page.css";
10 @import "../../media/css/demo_table.css";
12 <script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
13 <script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
14 <script type="text/javascript" charset="utf-8">
15 /* Time between each scrolling frame */
16 $.fn.dataTableExt.oPagination.iTweenTime = 100;
18 $.fn.dataTableExt.oPagination.scrolling = {
19 "fnInit": function ( oSettings, nPaging, fnCallbackDraw )
21 var oLang = oSettings.oLanguage.oPaginate;
22 var oClasses = oSettings.oClasses;
23 var fnClickHandler = function ( e ) {
24 if ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )
26 fnCallbackDraw( oSettings );
30 var sAppend = (!oSettings.bJUI) ?
31 '<a class="'+oSettings.oClasses.sPagePrevDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button">'+oLang.sPrevious+'</a>'+
32 '<a class="'+oSettings.oClasses.sPageNextDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button">'+oLang.sNext+'</a>'
34 '<a class="'+oSettings.oClasses.sPagePrevDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button"><span class="'+oSettings.oClasses.sPageJUIPrev+'"></span></a>'+
35 '<a class="'+oSettings.oClasses.sPageNextDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button"><span class="'+oSettings.oClasses.sPageJUINext+'"></span></a>';
36 $(nPaging).append( sAppend );
38 var els = $('a', nPaging);
39 var nPrevious = els[0],
42 oSettings.oApi._fnBindAction( nPrevious, {action: "previous"}, function() {
43 /* Disallow paging event during a current paging event */
44 if ( typeof oSettings.iPagingLoopStart != 'undefined' && oSettings.iPagingLoopStart != -1 )
49 oSettings.iPagingLoopStart = oSettings._iDisplayStart;
50 oSettings.iPagingEnd = oSettings._iDisplayStart - oSettings._iDisplayLength;
52 /* Correct for underrun */
53 if ( oSettings.iPagingEnd < 0 )
55 oSettings.iPagingEnd = 0;
58 var iTween = $.fn.dataTableExt.oPagination.iTweenTime;
59 var innerLoop = function () {
60 if ( oSettings.iPagingLoopStart > oSettings.iPagingEnd ) {
61 oSettings.iPagingLoopStart--;
62 oSettings._iDisplayStart = oSettings.iPagingLoopStart;
63 fnCallbackDraw( oSettings );
64 setTimeout( function() { innerLoop(); }, iTween );
66 oSettings.iPagingLoopStart = -1;
72 oSettings.oApi._fnBindAction( nNext, {action: "next"}, function() {
73 /* Disallow paging event during a current paging event */
74 if ( typeof oSettings.iPagingLoopStart != 'undefined' && oSettings.iPagingLoopStart != -1 )
79 oSettings.iPagingLoopStart = oSettings._iDisplayStart;
81 /* Make sure we are not over running the display array */
82 if ( oSettings._iDisplayStart + oSettings._iDisplayLength < oSettings.fnRecordsDisplay() )
84 oSettings.iPagingEnd = oSettings._iDisplayStart + oSettings._iDisplayLength;
87 var iTween = $.fn.dataTableExt.oPagination.iTweenTime;
88 var innerLoop = function () {
89 if ( oSettings.iPagingLoopStart < oSettings.iPagingEnd ) {
90 oSettings.iPagingLoopStart++;
91 oSettings._iDisplayStart = oSettings.iPagingLoopStart;
92 fnCallbackDraw( oSettings );
93 setTimeout( function() { innerLoop(); }, iTween );
95 oSettings.iPagingLoopStart = -1;
102 "fnUpdate": function ( oSettings, fnCallbackDraw )
104 if ( !oSettings.aanFeatures.p )
109 /* Loop over each instance of the pager */
110 var an = oSettings.aanFeatures.p;
111 for ( var i=0, iLen=an.length ; i<iLen ; i++ )
113 if ( an[i].childNodes.length !== 0 )
115 an[i].childNodes[0].className =
116 ( oSettings._iDisplayStart === 0 ) ?
117 oSettings.oClasses.sPagePrevDisabled : oSettings.oClasses.sPagePrevEnabled;
119 an[i].childNodes[1].className =
120 ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) ?
121 oSettings.oClasses.sPageNextDisabled : oSettings.oClasses.sPageNextEnabled;
127 $(document).ready(function() {
128 $('#example').dataTable( {
129 "sPaginationType": "scrolling"
134 <body id="dt_example">
136 <div class="full_width big">
137 DataTables custom pagination plug-in example
141 <p>The two default pagination styles that DataTables comes with are great for basic tables, but you might which to add extra customisation or a bit of 'glitz'. This plug-in will scroll the table in an animated style.</p>
143 <h1>Live example</h1>
145 <table cellpadding="0" cellspacing="0" border="0" class="display" id="example">
148 <th>Rendering engine</th>
151 <th>Engine version</th>
161 <td class="center">4</td>
162 <td class="center">X</td>
169 <td class="center">5</td>
170 <td class="center">C</td>
177 <td class="center">5.5</td>
178 <td class="center">A</td>
185 <td class="center">6</td>
186 <td class="center">A</td>
190 <td>Internet Explorer 7</td>
192 <td class="center">7</td>
193 <td class="center">A</td>
197 <td>AOL browser (AOL desktop)</td>
199 <td class="center">6</td>
200 <td class="center">A</td>
205 <td>Win 98+ / OSX.2+</td>
206 <td class="center">1.7</td>
207 <td class="center">A</td>
212 <td>Win 98+ / OSX.2+</td>
213 <td class="center">1.8</td>
214 <td class="center">A</td>
219 <td>Win 98+ / OSX.2+</td>
220 <td class="center">1.8</td>
221 <td class="center">A</td>
226 <td>Win 2k+ / OSX.3+</td>
227 <td class="center">1.9</td>
228 <td class="center">A</td>
234 <td class="center">1.8</td>
235 <td class="center">A</td>
241 <td class="center">1.8</td>
242 <td class="center">A</td>
246 <td>Netscape 7.2</td>
247 <td>Win 95+ / Mac OS 8.6-9.2</td>
248 <td class="center">1.7</td>
249 <td class="center">A</td>
253 <td>Netscape Browser 8</td>
255 <td class="center">1.7</td>
256 <td class="center">A</td>
260 <td>Netscape Navigator 9</td>
261 <td>Win 98+ / OSX.2+</td>
262 <td class="center">1.8</td>
263 <td class="center">A</td>
268 <td>Win 95+ / OSX.1+</td>
269 <td class="center">1</td>
270 <td class="center">A</td>
275 <td>Win 95+ / OSX.1+</td>
276 <td class="center">1.1</td>
277 <td class="center">A</td>
282 <td>Win 95+ / OSX.1+</td>
283 <td class="center">1.2</td>
284 <td class="center">A</td>
289 <td>Win 95+ / OSX.1+</td>
290 <td class="center">1.3</td>
291 <td class="center">A</td>
296 <td>Win 95+ / OSX.1+</td>
297 <td class="center">1.4</td>
298 <td class="center">A</td>
303 <td>Win 95+ / OSX.1+</td>
304 <td class="center">1.5</td>
305 <td class="center">A</td>
310 <td>Win 95+ / OSX.1+</td>
311 <td class="center">1.6</td>
312 <td class="center">A</td>
317 <td>Win 98+ / OSX.1+</td>
318 <td class="center">1.7</td>
319 <td class="center">A</td>
324 <td>Win 98+ / OSX.1+</td>
325 <td class="center">1.8</td>
326 <td class="center">A</td>
330 <td>Seamonkey 1.1</td>
331 <td>Win 98+ / OSX.2+</td>
332 <td class="center">1.8</td>
333 <td class="center">A</td>
337 <td>Epiphany 2.20</td>
339 <td class="center">1.8</td>
340 <td class="center">A</td>
346 <td class="center">125.5</td>
347 <td class="center">A</td>
353 <td class="center">312.8</td>
354 <td class="center">A</td>
360 <td class="center">419.3</td>
361 <td class="center">A</td>
367 <td class="center">522.1</td>
368 <td class="center">A</td>
374 <td class="center">420</td>
375 <td class="center">A</td>
379 <td>iPod Touch / iPhone</td>
381 <td class="center">420.1</td>
382 <td class="center">A</td>
388 <td class="center">413</td>
389 <td class="center">A</td>
394 <td>Win 95+ / OSX.1+</td>
395 <td class="center">-</td>
396 <td class="center">A</td>
401 <td>Win 95+ / OSX.2+</td>
402 <td class="center">-</td>
403 <td class="center">A</td>
408 <td>Win 95+ / OSX.2+</td>
409 <td class="center">-</td>
410 <td class="center">A</td>
415 <td>Win 95+ / OSX.2+</td>
416 <td class="center">-</td>
417 <td class="center">A</td>
422 <td>Win 95+ / OSX.3+</td>
423 <td class="center">-</td>
424 <td class="center">A</td>
429 <td>Win 88+ / OSX.3+</td>
430 <td class="center">-</td>
431 <td class="center">A</td>
436 <td>Win 88+ / OSX.3+</td>
437 <td class="center">-</td>
438 <td class="center">A</td>
442 <td>Opera for Wii</td>
444 <td class="center">-</td>
445 <td class="center">A</td>
451 <td class="center">-</td>
452 <td class="center">A</td>
456 <td>Nintendo DS browser</td>
458 <td class="center">8.5</td>
459 <td class="center">C/A<sup>1</sup></td>
463 <td>Konqureror 3.1</td>
465 <td class="center">3.1</td>
466 <td class="center">C</td>
470 <td>Konqureror 3.3</td>
472 <td class="center">3.3</td>
473 <td class="center">A</td>
477 <td>Konqureror 3.5</td>
479 <td class="center">3.5</td>
480 <td class="center">A</td>
484 <td>Internet Explorer 4.5</td>
486 <td class="center">-</td>
487 <td class="center">X</td>
491 <td>Internet Explorer 5.1</td>
492 <td>Mac OS 7.6-9</td>
493 <td class="center">1</td>
494 <td class="center">C</td>
498 <td>Internet Explorer 5.2</td>
500 <td class="center">1</td>
501 <td class="center">C</td>
505 <td>NetFront 3.1</td>
506 <td>Embedded devices</td>
507 <td class="center">-</td>
508 <td class="center">C</td>
512 <td>NetFront 3.4</td>
513 <td>Embedded devices</td>
514 <td class="center">-</td>
515 <td class="center">A</td>
520 <td>Embedded devices</td>
521 <td class="center">-</td>
522 <td class="center">X</td>
528 <td class="center">-</td>
529 <td class="center">X</td>
535 <td class="center">-</td>
536 <td class="center">X</td>
541 <td>Windows Mobile 6</td>
542 <td class="center">-</td>
543 <td class="center">C</td>
549 <td class="center">-</td>
550 <td class="center">C</td>
553 <td>Other browsers</td>
556 <td class="center">-</td>
557 <td class="center">U</td>
562 <th>Rendering engine</th>
565 <th>Engine version</th>
571 <div class="spacer"></div>
574 <h1>Initialisation code</h1>
575 <pre class="brush: js;">/* Time between each scrolling frame */
576 $.fn.dataTableExt.oPagination.iTweenTime = 100;
578 $.fn.dataTableExt.oPagination.scrolling = {
579 "fnInit": function ( oSettings, nPaging, fnCallbackDraw )
581 /* Store the next and previous elements in the oSettings object as they can be very
582 * usful for automation - particularly testing
584 var nPrevious = document.createElement( 'div' );
585 var nNext = document.createElement( 'div' );
587 if ( oSettings.sTableId !== '' )
589 nPaging.setAttribute( 'id', oSettings.sTableId+'_paginate' );
590 nPrevious.setAttribute( 'id', oSettings.sTableId+'_previous' );
591 nNext.setAttribute( 'id', oSettings.sTableId+'_next' );
594 nPrevious.className = "paginate_disabled_previous";
595 nNext.className = "paginate_disabled_next";
597 nPrevious.title = oSettings.oLanguage.oPaginate.sPrevious;
598 nNext.title = oSettings.oLanguage.oPaginate.sNext;
600 nPaging.appendChild( nPrevious );
601 nPaging.appendChild( nNext );
603 $(nPrevious).click( function() {
604 /* Disallow paging event during a current paging event */
605 if ( typeof oSettings.iPagingLoopStart != 'undefined' && oSettings.iPagingLoopStart != -1 )
610 oSettings.iPagingLoopStart = oSettings._iDisplayStart;
611 oSettings.iPagingEnd = oSettings._iDisplayStart - oSettings._iDisplayLength;
613 /* Correct for underrun */
614 if ( oSettings.iPagingEnd < 0 )
616 oSettings.iPagingEnd = 0;
619 var iTween = $.fn.dataTableExt.oPagination.iTweenTime;
620 var innerLoop = function () {
621 if ( oSettings.iPagingLoopStart > oSettings.iPagingEnd ) {
622 oSettings.iPagingLoopStart--;
623 oSettings._iDisplayStart = oSettings.iPagingLoopStart;
624 fnCallbackDraw( oSettings );
625 setTimeout( function() { innerLoop(); }, iTween );
627 oSettings.iPagingLoopStart = -1;
633 $(nNext).click( function() {
634 /* Disallow paging event during a current paging event */
635 if ( typeof oSettings.iPagingLoopStart != 'undefined' && oSettings.iPagingLoopStart != -1 )
640 oSettings.iPagingLoopStart = oSettings._iDisplayStart;
642 /* Make sure we are not over running the display array */
643 if ( oSettings._iDisplayStart + oSettings._iDisplayLength < oSettings.fnRecordsDisplay() )
645 oSettings.iPagingEnd = oSettings._iDisplayStart + oSettings._iDisplayLength;
648 var iTween = $.fn.dataTableExt.oPagination.iTweenTime;
649 var innerLoop = function () {
650 if ( oSettings.iPagingLoopStart < oSettings.iPagingEnd ) {
651 oSettings.iPagingLoopStart++;
652 oSettings._iDisplayStart = oSettings.iPagingLoopStart;
653 fnCallbackDraw( oSettings );
654 setTimeout( function() { innerLoop(); }, iTween );
656 oSettings.iPagingLoopStart = -1;
662 /* Take the brutal approach to cancelling text selection */
663 $(nPrevious).bind( 'selectstart', function () { return false; } );
664 $(nNext).bind( 'selectstart', function () { return false; } );
667 "fnUpdate": function ( oSettings, fnCallbackDraw )
669 if ( !oSettings.aanFeatures.p )
674 /* Loop over each instance of the pager */
675 var an = oSettings.aanFeatures.p;
676 for ( var i=0, iLen=an.length ; i<iLen ; i++ )
678 if ( an[i].childNodes.length !== 0 )
680 an[i].childNodes[0].className =
681 ( oSettings._iDisplayStart === 0 ) ?
682 oSettings.oClasses.sPagePrevDisabled : oSettings.oClasses.sPagePrevEnabled;
684 an[i].childNodes[1].className =
685 ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) ?
686 oSettings.oClasses.sPageNextDisabled : oSettings.oClasses.sPageNextEnabled;
692 $(document).ready(function() {
693 $('#example').dataTable( {
694 "sPaginationType": "scrolling"
697 <style type="text/css">
698 @import "../examples_support/syntax/css/shCore.css";
700 <script type="text/javascript" language="javascript" src="../examples_support/syntax/js/shCore.js"></script>
703 <h1>Other examples</h1>
704 <div class="demo_links">
705 <h2>Basic initialisation</h2>
707 <li><a href="../basic_init/zero_config.html">Zero configuration</a></li>
708 <li><a href="../basic_init/filter_only.html">Feature enablement</a></li>
709 <li><a href="../basic_init/table_sorting.html">Sorting data</a></li>
710 <li><a href="../basic_init/multi_col_sort.html">Multi-column sorting</a></li>
711 <li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
712 <li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
713 <li><a href="../basic_init/complex_header.html">Complex headers - grouping with colspan</a></li>
714 <li><a href="../basic_init/dom.html">DOM positioning</a></li>
715 <li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
716 <li><a href="../basic_init/state_save.html">State saving</a></li>
717 <li><a href="../basic_init/alt_pagination.html">Alternative pagination styles</a></li>
719 <a href="../basic_init/scroll_x.html">Horizontal</a> /
720 <a href="../basic_init/scroll_y.html">Vertical</a> /
721 <a href="../basic_init/scroll_xy.html">Both</a> /
722 <a href="../basic_init/scroll_y_theme.html">Themed</a> /
723 <a href="../basic_init/scroll_y_infinite.html">Infinite</a>
725 <li><a href="../basic_init/language.html">Change language information (internationalisation)</a></li>
726 <li><a href="../basic_init/themes.html">ThemeRoller themes (Smoothness)</a></li>
729 <h2>Advanced initialisation</h2>
732 <a href="../advanced_init/events_live.html">Live events</a> /
733 <a href="../advanced_init/events_pre_init.html">Pre-init</a> /
734 <a href="../advanced_init/events_post_init.html">Post-init</a>
736 <li><a href="../advanced_init/column_render.html">Column rendering</a></li>
737 <li><a href="../advanced_init/html_sort.html">Sorting without HTML tags</a></li>
738 <li><a href="../advanced_init/dom_multiple_elements.html">Multiple table controls (sDom)</a></li>
739 <li><a href="../advanced_init/length_menu.html">Defining length menu options</a></li>
740 <li><a href="../advanced_init/complex_header.html">Complex headers and hidden columns</a></li>
741 <li><a href="../advanced_init/dom_toolbar.html">Custom toolbar (element) around table</a></li>
742 <li><a href="../advanced_init/highlight.html">Row highlighting with CSS</a></li>
743 <li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
744 <li><a href="../advanced_init/row_callback.html">Row callback</a></li>
745 <li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
746 <li><a href="../advanced_init/sorting_control.html">Control sorting direction of columns</a></li>
747 <li><a href="../advanced_init/language_file.html">Change language information from a file (internationalisation)</a></li>
748 <li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
749 <li><a href="../advanced_init/localstorage.html">State saving with localStorage</a></li>
750 <li><a href="../advanced_init/dt_events.html">Custom events</a></li>
755 <li><a href="../api/add_row.html">Dynamically add a new row</a></li>
756 <li><a href="../api/multi_filter.html">Individual column filtering (using "input" elements)</a></li>
757 <li><a href="../api/multi_filter_select.html">Individual column filtering (using "select" elements)</a></li>
758 <li><a href="../api/highlight.html">Highlight rows and columns</a></li>
759 <li><a href="../api/row_details.html">Show and hide details about a particular record</a></li>
760 <li><a href="../api/select_row.html">User selectable rows (multiple rows)</a></li>
761 <li><a href="../api/select_single_row.html">User selectable rows (single row) and delete rows</a></li>
762 <li><a href="../api/editable.html">Editable rows (with jEditable)</a></li>
763 <li><a href="../api/form.html">Submit form with elements in table</a></li>
764 <li><a href="../api/counter_column.html">Index column (static number column)</a></li>
765 <li><a href="../api/show_hide.html">Show and hide columns dynamically</a></li>
766 <li><a href="../api/api_in_init.html">API function use in initialisation object (callback)</a></li>
767 <li><a href="../api/tabs_and_scrolling.html">DataTables scrolling and tabs</a></li>
768 <li><a href="../api/regex.html">Regular expression filtering</a></li>
772 <div class="demo_links">
773 <h2>Data sources</h2>
775 <li><a href="../data_sources/dom.html">DOM</a></li>
776 <li><a href="../data_sources/js_array.html">Javascript array</a></li>
777 <li><a href="../data_sources/ajax.html">Ajax source</a></li>
778 <li><a href="../data_sources/server_side.html">Server side processing</a></li>
781 <h2>Server-side processing</h2>
783 <li><a href="../server_side/server_side.html">Obtain server-side data</a></li>
784 <li><a href="../server_side/custom_vars.html">Add extra HTTP variables</a></li>
785 <li><a href="../server_side/post.html">Use HTTP POST</a></li>
786 <li><a href="../server_side/ids.html">Automatic addition of IDs and classes to rows</a></li>
787 <li><a href="../server_side/object_data.html">Reading table data from objects</a></li>
788 <li><a href="../server_side/row_details.html">Show and hide details about a particular record</a></li>
789 <li><a href="../server_side/select_rows.html">User selectable rows (multiple rows)</a></li>
790 <li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
791 <li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
792 <li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
793 <li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
796 <h2>Ajax data source</h2>
798 <li><a href="../ajax/ajax.html">Ajax sourced data (array of arrays)</a></li>
799 <li><a href="../ajax/objects.html">Ajax sourced data (array of objects)</a></li>
800 <li><a href="../ajax/defer_render.html">Deferred DOM creation for extra speed</a></li>
801 <li><a href="../ajax/null_data_source.html">Empty data source columns</a></li>
802 <li><a href="../ajax/custom_data_property.html">Use a data source other than aaData (the default)</a></li>
803 <li><a href="../ajax/objects_subarrays.html">Read column data from sub-arrays</a></li>
804 <li><a href="../ajax/deep.html">Read column data from deeply nested properties</a></li>
809 <li><a href="../plug-ins/plugin_api.html">Add custom API functions</a></li>
810 <li><a href="../plug-ins/sorting_plugin.html">Sorting and automatic type detection</a></li>
811 <li><a href="../plug-ins/sorting_sType.html">Sorting without automatic type detection</a></li>
812 <li><a href="../plug-ins/paging_plugin.html">Custom pagination controls</a></li>
813 <li><a href="../plug-ins/range_filtering.html">Range filtering / custom filtering</a></li>
814 <li><a href="../plug-ins/dom_sort.html">Live DOM sorting</a></li>
815 <li><a href="../plug-ins/html_sort.html">Automatic HTML type detection</a></li>
820 <div id="footer" class="clear" style="text-align:center;">
822 Please refer to the <a href="http://www.datatables.net/usage">DataTables documentation</a> for full information about its API properties and methods.<br>
823 Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of DataTables.
826 <span style="font-size:10px;">
827 DataTables designed and created by <a href="http://www.sprymedia.co.uk">Allan Jardine</a> © 2007-2011<br>
828 DataTables is dual licensed under the <a href="http://www.datatables.net/license_gpl2">GPL v2 license</a> or a <a href="http://www.datatables.net/license_bsd">BSD (3-point) license</a>.