Server-side processing in DataTables is exceptionally useful if you want display large data sources in a quick and easy manner, with controls such as filtering, sorting and paging. Since all of the heavy lifting is done on the server-side, there needs to be a script which will do this work on the server, and DataTables can ask for the data to display. This can be a little tricky to implement correctly initially, but presented here are a number of scripts which can be used and customised to your specific needs.
Each script uses the same data source (the schema and data are available here) to make each implementation basically the same in functionality as it is presented.
Each of the implementations differs in the feature set that it implements (the feature set is based upon the data that is sent to the server-side process through the passed parameters. Note that the PHP with MySQL version will always be kept up to data with support for the full feature server that DataTables provides (with the exception of regex filtering support due to performance of regex on large tables) - others are updated as the implementation authors develop each individual script.
Implementation | Database | Compatibility | Pagination | Filtering | Sorting | Regex filtering |
---|---|---|---|---|---|---|
ASP Classic | SQL Server 2008 | DataTables 1.6+ | Yes | Yes | Yes | No |
ASP.NET | SQL Server 2008 | DataTables 1.6+ | Yes | Yes | Yes | No |
ColdFusion (tags) | MySQL | DataTables 1.6+ | Yes | Yes Global |
Yes Multi-column |
No |
ColdFusion (cfscript) | MySQL | DataTables 1.6+ | Yes | Yes Global |
Yes Multi-column |
No |
JSP | Abstracted | DataTables 1.6+ | Yes | Yes Global |
Yes Multi-column |
No |
Perl | MySQL | DataTables 1.6+ | Yes | Yes Global + columns + bSearchable_i check |
Yes Multi-column + bSortable_i check |
No |
Perl (CGI::Application) | MySQL | DataTables 1.6+ | Yes | Yes Global + bSearchable_i check |
Yes Multi-column |
No |
PHP (CakePHP) | MySQL | DataTables 1.6+ | Yes | Yes Global + columns + bSearchable_i check |
Yes Multi-column + bSortable_i check |
No |
PHP (CodeIgniter) | Abstracted | DataTables 1.6+ | Yes | Yes Global + columns + bSearchable_i check |
Yes Multi-column + bSortable_i check |
No |
PHP | Informix ODBC | DataTables 1.6+ | Yes | Yes Global + columns + bSearchable_i check |
Yes Multi-column + bSortable_i check |
No |
PHP | MongoDB | DataTables 1.6+ | Yes | Yes Global + columns + bSearchable_i check |
Yes Multi-column + bSortable_i check |
Yes |
PHP | MSSQL ODBC | DataTables 1.6+ | Yes | Yes Global + columns + bSearchable_i check |
Yes Multi-column + bSortable_i check |
No |
PHP | MySQL | DataTables 1.6+ | Yes | Yes Global + columns + bSearchable_i check |
Yes Multi-column + bSortable_i check |
No |
PHP 4 - 5.1 | MySQL | DataTables 1.6+ | Yes | Yes Global + columns + bSearchable_i check |
Yes Multi-column + bSortable_i check |
No |
PHP - mysqli | MySQL | DataTables 1.6+ | Yes | Yes Global + columns + bSearchable_i check |
Yes Multi-column + bSortable_i check |
No |
PHP | PostgreSQL | DataTables 1.6+ | Yes | Yes Global + columns + bSearchable_i check |
Yes Multi-column + bSortable_i check |
No |
PHP | Oracle 10g | DataTables 1.6+ | Yes | Yes Global + columns + bSearchable_i check |
Yes Multi-column + bSortable_i check |
No |
Python (CGI) | MySQL | DataTables 1.6+ | Yes | Yes Global |
Yes Multi-column |
No |
Ruby (CGI) | MySQL | DataTables 1.6+ | Yes | Yes Global |
Yes Multi-column |
No |
Ruby on Rails | MySQL | DataTables 1.6+ | Yes | Yes Global |
Yes Single column |
No |
Yesod | Abstracted | DataTables 1.6+ | Yes | Yes Global + columns + bSearchable_i check |
Yes Multi-column + bSortable_i check |
No |
It should be noted that the scripts presented here are sample implementation, and will hopefully give you a good starting point when integrating DataTables with your server-side processing. You will need to make simple modifications to the scripts to access your own database, and potentially more extensive modifications if you want to significantly change the scripts operate. Hacking at these scripts is strong encouraged! Please see the server-side usage for details on the parameters passed to and from DataTables.
Many of these scripts are kindly contributed to the DataTables community by those who have taken the time to implement them for their own projects - the copyright and credit is noted in the header of each individual script. Thank you all! If you have any improvements to an implementation, or an entirely new one in your language of choice which you can share with us, please get in touch!