HTML Code
<table id="invoices" class="table table-striped table-bordered zero-configuration ">
<thead>
<tr>
<th><?php echo $this->lang->line('No') ?></th>
<th> #</th>
<th><?php echo $this->lang->line('Customer') ?></th>
<th><?php echo $this->lang->line('Date') ?></th>
<th><?php echo $this->lang->line('Amount') ?></th>
<th><?php echo $this->lang->line('Status') ?></th>
<th class="no-sort"><?php echo $this->lang->line('Settings') ?></th>
</tr>
</thead>
<tbody>
</tbody>
<tfoot>
<tr>
<th><?php echo $this->lang->line('No') ?></th>
<th> #</th>
<th><?php echo $this->lang->line('Customer') ?></th>
<th><?php echo $this->lang->line('Date') ?></th>
<th><?php echo $this->lang->line('Amount') ?></th>
<th><?php echo $this->lang->line('Status') ?></th>
<th class="no-sort"><?php echo $this->lang->line('Settings') ?></th>
</tr>
</tfoot>
</table>
Ajax request code
public function ajax_list()
{
$list = $this->invocies->get_datatables($this->limited);
$data = array();
$no = $this->input->post('start');
foreach ($list as $invoices) {
$no++;
$row = array();
$row[] = $no;
$row[] = '<a href="' . base_url("invoices/view?id=$invoices->id") . '"> ' . $invoices->tid . '</a>';
$row[] = $invoices->name;
$row[] = dateformat($invoices->invoicedate);
$row[] = amountExchange($invoices->total, 0, $this->aauth->get_user()->loc);
$row[] = '<span class="st-' . $invoices->status . '">' . $this->lang->line(ucwords($invoices->status)) . '</span>';
$row[] = '<a href="' . base_url("invoices/view?id=$invoices->id") . '" class="btn btn-success btn-sm" title="View"><i class="fa fa-eye"></i></a> <a href="' . base_url("invoices/printinvoice?id=$invoices->id") . '&d=1" class="btn btn-info btn-sm" title="Download"><span class="fa fa-download"></span></a> <a href="#" data-object-id="' . $invoices->id . '" class="btn btn-danger btn-sm delete-object"><span class="fa fa-trash"></span></a>';
$data[] = $row;
}
$output = array(
"draw" => $this->input->post('draw'),
"recordsTotal" => $this->invocies->count_all($this->limited),
"recordsFiltered" => $this->invocies->count_filtered($this->limited),
"data" => $data,
);
//output to json format
echo json_encode($output);
}
Javascript
<script type="text/javascript">
$(document).ready(function () {
draw_data();
function draw_data(start_date = '', end_date = '') {
$('#invoices').DataTable({
'processing': true,
'serverSide': true,
'stateSave': true,
<?php datatable_lang();?>
responsive: true,
'order': [],
'ajax': {
'url': "<?php echo site_url('invoices/ajax_list')?>",
'type': 'POST',
'data': {
'<?=$this->security->get_csrf_token_name()?>': crsf_hash,
start_date: start_date,
end_date: end_date
}
},
'columnDefs': [
{
'targets': [0],
'orderable': false,
},
],
dom: 'Blfrtip',
buttons: [
{
extend: 'excelHtml5',
footer: true,
exportOptions: {
columns: [1, 2, 3, 4, 5]
}
}
],
});
};
$('#search').click(function () {
var start_date = $('#start_date').val();
var end_date = $('#end_date').val();
if (start_date != '' && end_date != '') {
$('#invoices').DataTable().destroy();
draw_data(start_date, end_date);
} else {
alert("Date range is Required");
}
});
});
</script>