By default datatables load all record from database and then use search in client side. but it often cause problem in large data set, to load from database.
So i implement custom paging and searching using jqery Bootpag pagination
https://codepen.io/SitePoint/pen/jBWOMX
HTML
<div class="col-md-4">
<input type="text" class="form-control" style="float:left;"
placeholder="Search Style size,Barcode,Product" id="myInputTextField">
</div>
<div class="col-md-12" style="margin-top: -10px;">
<div class="table-responsive" style="margin-top: 0px;">
<table id="dlWarehouseStock" class="display" cellspacing="0" width="100%">
<thead>
<tr>
<th>Barcode</th>
<th>Product</th>
<th>BrandType</th>
<th>Style</th>
<th>SupName</th>
<th>CPU</th>
<th>CS Balance</th>
<th>Options</th>
</tr>
</thead>
</table>
</div>
</div>
JQeruy
$(document).ready(function () {
$('#pagination-here').on("page", function (event, num) {
//show / hide content or pull via ajax etc
$("#content").html("Page " + num);
LoadCentralStockAll("", num, $('#myInputTextField').val());
});
$("#myInputTextField").keypress(function (e) {
if (e.keyCode == 13) {
if ($('#myInputTextField').val().length == 0) {
GetTotalNumberOfStyleSize($('#myInputTextField').val());
LoadCentralStockAll("", 1, "");
} else {
debugger;
GetTotalNumberOfStyleSize($('#myInputTextField').val());
LoadCentralStockAll("", 1, $('#myInputTextField').val());
}
}
});
});
function LoadCentralStockAll(parameter, pageNumber, searchText) {
if ($.fn.dataTable.isDataTable('#dlWarehouseStock')) {
var tables = $('#dlWarehouseStock').DataTable();
tables.destroy();
}
$('#dlWarehouseStock').dataTable({
"processing": true,
'paging': false,
"bLengthChange": false,
"info": false,
//"ajax": url + "Process/GetCentralStockByType?Type=" + parameter,
"ajax": url + "Setup/GetAllstyleSizeBySupIDWithPagination?pageNumber=" + pageNumber + "&searchText=" + searchText + "&stockType=NonZero",
"columns": [
{ "data": "Barcode" },
{ "data": "PrdName" },
{ "data": "BTName" },
{ "data": "SSName" },
{ "data": "SupName" },
{ "data": "CPU" },
{ "data": "BalQty" },
{
"mData": null,
"bSortable": false,
"mRender": function (data, type, full) {
return 'Select ';
}
}
]
});
}
function GetTotalNumberOfStyleSize(searchText) {
$.ajax({
url: url + 'Setup/GetTotalNumberOfStyleSize',
data: { 'stockType': 'All', 'searchText': searchText },
success: function (data) {
console.log("Total no.");
console.log(data.data[0].TotalNoOfBarcode);
var paginationSize = parseInt(data.data[0].TotalNoOfBarcode) / 10;
if (paginationSize < 1) {
paginationSize = 1;
}
if (data.data.length) {
$('#pagination-here').bootpag({
total: Math.round(paginationSize),
page: 1,
maxVisible: 5,
leaps: true,
firstLastUse: true,
first: '←',
last: '→',
wrapClass: 'pagination',
activeClass: 'active',
disabledClass: 'disabled',
nextClass: 'next',
prevClass: 'prev',
lastClass: 'last',
firstClass: 'first'
});
} else {
alert("Invalid !");
}
},
error: function () {
alert('An error occured try again later');
}
});
}