var filterBy = function (functionType) { $.fn.dataTableExt.afnFiltering.length = 0 $.fn.dataTable.ext.search.push(function (settings, data, dataIndex) { var type = data[1] // use data for the Type column if (type.toUpperCase() == functionType || functionType == 'All') { return true } return false }) } $(document).ready(function () { var activeObject var table = $('#routine_table').DataTable({ lengthChange: false, ordering: true, paging: config.pagination, pageLength: 50, autoWidth: true, processing: true, order: [[0, 'asc']], buttons: [ { text: 'All', action: function (e, dt, node, config) { filterBy('All') if (activeObject != null) { activeObject.active(false) } table.draw() }, }, { text: 'Functions', action: function (e, dt, node, config) { filterBy('FUNCTION') if (activeObject != null) { activeObject.active(false) } this.active(!this.active()) activeObject = this table.draw() }, }, { text: 'Procedures', action: function (e, dt, node, config) { filterBy('PROCEDURE') if (activeObject != null) { activeObject.active(false) } this.active(!this.active()) activeObject = this table.draw() }, }, { extend: 'columnsToggle', columns: '.toggle', }, ], }) //schemaSpy.js dataTableExportButtons(table) })