Этот подход использует следующую строку для получения значения заголовка столбца:
var colTitle = this.header().innerHTML;
Затем он помещает это значение в элемент управления select, используя метод / трюк-заполнитель:
var select = $('<select><option value="" disabled selected>' + colTitle + '</option></select>')
Таким образом, соответствующий сегмент из вашего вопроса в конечном итоге выглядит следующим образом:
<script>
$(document).ready(function() {
$('#Table').DataTable( {
"pagingType": "full_numbers",
"lengthMenu": [[10, 25, 50, -1], [10, 25, 50, 100, "All"]],
"lengthChange": false,
language: {
search: "",
searchPlaceholder: "Search Providers",
},
"ordering": false,
initComplete: function () {
this.api().columns().every( function () {
var column = this;
var colTitle = this.header().innerHTML;
var select = $('<select><option value="" disabled selected>' + colTitle + '</option></select>')
.appendTo( $(column.header()).empty() )
.on( 'change', function () {
var val = $.fn.dataTable.util.escapeRegex(
$(this).val()
);
column
.search( val ? '^'+val+'$' : '', true, false )
.draw();
} );
column.data().unique().sort().each( function ( d, j ) {
select.append( '<option value="'+d+'">'+d+'</option>' )
} );
} );
}
} );
$('div.dataTables_filter input').addClass('form-control');
$('div.dataTables_filter input').placeholder = "Search Providers";
$( "select" ).addClass( "form-control" );
} );
</script>
В результате вы получаете следующее поведение: текст заполнителя является частью раскрывающегося списка в верхней части списка, но затенено - и его нельзя выбрать.
Указывает на примечание:
1) Если вы хотите видеть «Имя поставщика» вместо «Поставщик» в первом столбце, выберите элемент управления, затем измените значение в заголовке связанной таблицы:
<th>Provider</th>
2) Я не знаю, как это взаимодействует с тем, как вам нужно заполнить остальные значения в каждом раскрывающемся списке (мой автономный тестовый файл, не использующий bootstrap) - поэтому заранее приносим свои извинения, если он не поможет вам полностью достичь желаемого.