ASP.NET MVC , Datatables server-side custom paging
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
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 '';
}
}
]
});
}
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');
}
});
}
Reference :http://littleprograming.blogspot.com/2017/10/aspnet-mvc-datatables-custom-paging.html#comment-form


Comments
Post a Comment