Is it possible to default the value of a column filter?
Is it possible to default the value of a column filter?
I have a Datatable with a column filter that uses a select element for the filter. I'd like to set a default filter, for this column so that it selects the overwhelmingly desired value for a particular column. I think I can figure out how to program a default for this filter parameter, but I don't want to do that if it's not necessary. I thought I should ask if there is a way to set a default value for a filter within the API that I might have missed. My filter code is basically what is in the example page, except that I've added a class selector (.cFilter) to control which columns have filters:
this.api().columns('.cFilter').every( function () {
var column = this;
var select = $('<select><option value=""></option></select>')
.appendTo( $(column.header()) )
.on( 'change', function () {
var val = $.fn.dataTable.util.escapeRegex(
$(this).val()
);
column
.search( val ? '^'+val+'$' : '', true, false )
.draw();
} );
column
.cache( 'search' )
.sort()
.unique()
.each( function ( d ) {
if (d.length > 0) {
select.append( $('<option value="'+d+'">'+d.substr(0,9)+'</option>') );
}
} );
} );
Is there a built-in way to do this, or should I just write some more code? I just don't want to write new code if this is a feature that I've missed.
Thanks,
Tom
This question has an accepted answers - jump to answer
Answers
Hi @TomBajzek ,
Yep, you can see up an initial column-based filter with
searchCols
. See example here.Cheers,
Colin
Colin,
I think your example might be with an earlier version of DataTables, but I think I adapted it correctly, as it now seems to work as I wanted. This was simpler and clearer that code I envisioned needing to write otherwise.
Many thanks for your suggestion,
Tom
As a follow on to this question, can you exclude a search term also?
The issue I have is that I want to initially return on the term, "PL Tulsa" But I also have a value in the db for "Non PL Tulsa" that is being returned as well because it meets my search criteria. I would like to initially only display the "PL Tulsa" and exclude "Non PL Tulsa."
Thanks,
Jerrod
You would need to use a regex search with a search string like this
^PL Tulsa
.Kevin