我有一个jQuery数据表,并且在此数据表中添加了一个下拉列过滤。在此过滤器选项中,它仅显示此页面上存在的那些选项。由于此列的最大值可能有两个不同的值。因此,我不想显示该页面上的全部选项,而是要显示自定义选项。
我当前的代码如下:
let company_id = '<?php echo $company->id; ?>';
var table = $('#companyUsersDatatable').DataTable({
"processing": true,
"serverSide": true,
"ajax": {
"url":base_path +'/admin/company/'+company_id+'/users/list',
"dataType":"json",
"type":"POST",
"data":{"_token":csrf_token}
},
"initComplete": function () {
this.api().columns([3]).every( function () {
var column = this;
var select = $('<select class="form-control"><option value="1">Admin</option><option value="2">User</option></select>')
.appendTo( $(column.footer()).empty() )
.on( 'change', function () {
var val = $(this).val();
column.search( this.value ).draw();
} );
// Only contains the *visible* options from the first page
// console.log(column.data().unique());
// If I add extra data in my JSON, how do I access it here besides column.data?
column.data().unique().sort().each( function ( d, j ) {
select.append( '<option value="'+d+'">'+d+'</option>' )
} );
} );
},
"columnDefs": [
{
'targets': 0,
'checkboxes': {
'selectRow': true
}
}
],
"select": {
'style': 'multi'
},
"columns":[
{"data":"id"},
{"data":"name"},
{"data":"email"},
{"data":"company_role"},
{"data":"created_at"},
{"data":"action","searchable":false,"orderable":false}
],
"deferRender": true,
"pagingType": "simple",
"searchable": false,
// "bFilter": false,
// "searching": true,
// "ordering": false,
"order": [[ 3, "desc" ]],
"dom": "lrtip",
"language": {
"emptyTable": " "
}
});
但是,此代码不仅显示Admin
和users
的两个所需选项,还显示company_role
列的值中的其他选项。
我需要仅显示admin
和user
的两个下拉选项。