DataTable Custom Paging using REST in SharePoint.
1. Create 'Employee' list and add some data.
2. Create a script file and add into Site Assets library.
3. Add 'Content Editor' webpart into a page and give content link as above script file url from Site Assets.
4. Check the result.
1. Create 'Employee' list and add some data.
2. Create a script file and add into Site Assets library.
<!DOCTYPE html PUBLIC "-//W3C//DTD
XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"/>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css"/>
<link rel="stylesheet" href="https://cdn.datatables.net/1.10.16/css/jquery.dataTables.min.css"/>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js"></script>
<script type="text/javascript">
var paginateMaxID = "";
var paginateMinID = "";
var paginateNext = "Next";
var paginatePrevious = "Previous";
var paginateCountPerPage
= 3;
var lstEmployee = 'Employees';
$(document).ready(function(){
GetEmployeeItems();
$("#liPrevious").click(function() {
DataTablePaginate($("#liPrevious").text().trim());
});
$("#liNext").click(function() {
DataTablePaginate($("#liNext").text().trim());
});
$("#divPaginationPager").show();
});
function GetEmployeeItems(pPreviousOrNext) {
var url = "";
var response =
[];
if(pPreviousOrNext == undefined) {
url = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/GetByTitle('"+lstEmployee+"')/items?$top="+paginateCountPerPage+
"&$select=ID,Title,Address&$orderby=ID desc";
}
else if(pPreviousOrNext==paginateNext) {
url = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/GetByTitle('"+lstEmployee+"')/items?"+
"$filter=ID gt "+paginateMaxID+"&$top="+paginateCountPerPage+"&$select=ID,Title,Address&$orderby=ID asc";
}
else if(pPreviousOrNext==paginatePrevious) {
url = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/GetByTitle('"+lstEmployee+"')/items?"+
"$filter=ID lt "+paginateMinID+"&$top="+paginateCountPerPage+"&$select=ID,Title,Address&$orderby=ID desc";
}
$.ajax({
url: url,
type: "GET",
headers: {
Accept: "application/json;odata=verbose"
},
async: false,
cache: false,
beforeSend: function(){
},
success: function (data, status, xhr) {
if(data.d.results != undefined && data.d.results.length > 0) {
response = data.d.results;
}
$('#divDataTablePagingEmployee').html("");
$('#tblDataTablePagingEmployee').html("");
if (response != undefined && response.length > 0) {
$('#divDataTablePagingEmployee').append(getDatatable(response,pPreviousOrNext));
}
else
{
var tableContent =
'<table id="tblDataTablePagingEmployee"
class="table table-striped table-bordered" cellspacing="0"
width="100%">'+
'<thead>'+
'<tr>'+
'<th class="bg-primary" style="text-align:
center; !important">ID</th>'+
'<th class="bg-primary" style="text-align:
center; !important">Name</th>'+
'<th class="bg-primary" style="text-align: center;
!important">Address</th>'+
'</tr>'+
'</thead>'+
'<tbody>';
tableContent += '<tr>';
tableContent += '<td><span>No records
found</span></td><td></td><td></td>';
tableContent += '</tr>';
tableContent +='</tbody></table>';
$('#divDataTablePagingEmployee').append(tableContent);
console.log("no records found");
}
if(!$.fn.DataTable.isDataTable('#tblDataTablePagingEmployee'))
{
var table = $('#tblDataTablePagingEmployee').DataTable({
"columnDefs": [{"className": "dt-center",
"targets": "_all"}],
"pagingType": "simple",
"lengthMenu": [[5000, -1], [5000, "All"]],
"ordering": false,
"order":
[]
});
}
if($("#tblDataTablePagingEmployee_length").length>0) {
$("#tblDataTablePagingEmployee_length").hide();
}
if($("#tblDataTablePagingEmployee_paginate").length>0) {
$("#tblDataTablePagingEmployee_paginate").hide();
}
if($("#tblDataTablePagingEmployee_info").length>0) {
$("#tblDataTablePagingEmployee_info").hide();
}
if (!(response != undefined && response.length > 0)) {
if(pPreviousOrNext==paginateNext) {
paginateMinID = paginateMaxID+1;
paginateMaxID = "";
var addClassNextDisabled
= $("#liNext").attr('class');
if(addClassNextDisabled.indexOf("disabled")<0) {
$("#liNext").addClass("disabled");
}
}
else if(pPreviousOrNext==paginatePrevious) {
paginateMaxID = paginateMinID-1;
paginateMinID= "";
var addClassPreviousDisabled
= $("#liPrevious").attr('class');
if(addClassPreviousDisabled.indexOf("disabled")<0) {
$("#liPrevious").addClass("disabled");
}
}
}
},
error: function (xhr, status, error) {
$("#divdanger").text("error: "
+ xhr.responseText);
$("#divdanger").show();
},
complete: function() {
if($('#divDataTablePagingEmployee').html()=="") {
$('#divDataTablePagingEmployee').append("<span>Item does not exist. It may have been deleted
by another user. </span>");
}
}
});
}
function getDatatable(listData,pPreviousOrNext)
{
paginateMaxID = "";
paginateMinID = "";
var tableContent =
'<table
id="tblDataTablePagingEmployee" class="table table-striped table-bordered"
cellspacing="0" width="100%">'+
'<thead>'+
'<tr>'+
'<th class="bg-primary" style="text-align:
center; !important">ID</th>'+
'<th class="bg-primary" style="text-align:
center; !important">Name</th>'+
'<th class="bg-primary" style="text-align:
center; !important">Address</th>'+
'</tr>'+
'</thead>'+
'<tbody>';
if(pPreviousOrNext==paginateNext) {
listData.reverse();
}
for (var i = 0; i < listData.length; i++) {
if(i == 0) {
paginateMaxID = listData[i]["ID"];
}
if(i == listData.length-1) {
paginateMinID = listData[i]["ID"];
}
tableContent += '<tr>';
tableContent += '<td>'+(listData[i]["ID"]!=null&&listData[i]["ID"]!=""?listData[i]["ID"]:"")+'</td>';
tableContent += '<td>'+(listData[i]["Title"]!=null&&listData[i]["Title"]!=""?listData[i]["Title"]:"")+'</td>';
tableContent += '<td>'+(listData[i]["Address"]!=null&&listData[i]["Address"]!=""?listData[i]["Address"]:"")+'</td>';
tableContent += '</tr>';
}
tableContent +='</tbody></table>';
return tableContent;
console.log(tableContent);
}
function DataTablePaginate(pPreviousOrNext)
{
if(pPreviousOrNext == paginateNext) {
var clsPreviousDisabled
= $("#liPrevious").attr('class');
if(clsPreviousDisabled.indexOf("disabled")>0) {
$("#liPrevious").removeClass("disabled");
}
}
if(pPreviousOrNext == paginatePrevious) {
var clsNextDisabled = $("#liNext").attr('class');
if(clsNextDisabled.indexOf("disabled")>0) {
$("#liNext").removeClass("disabled");
}
}
if(($("#liPrevious").attr('class').indexOf("disabled")<0 && pPreviousOrNext == paginatePrevious) ||
($("#liNext").attr('class').indexOf("disabled")<0 && pPreviousOrNext == paginateNext)) {
GetEmployeeItems(pPreviousOrNext);
}
}
</script>
</head>
<body>
<p class="h1">DataTable Custom Paging using REST in SharePoint</p>
<div id="divDataTablePagingEmployee"></div>
<div id="divPaginationPager" class="row" style="display:none;">
<div class="col-lg-10
col-md-10 col-sm-10 col-xs-10"></div>
<div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
<ul class='pagination'>
<li class='page-item' id='liPrevious'>
<a class='page-link' href='#' tabindex='-1'>Previous</a>
</li>
<li class='page-item disabled' id='liNext'>
<a class='page-link' href='#'>Next</a>
</li>
</ul>
</div>
</div>
</body>
</html>
3. Add 'Content Editor' webpart into a page and give content link as above script file url from Site Assets.
4. Check the result.
https://peakfinders.blogspot.com/2015/12/table-pagination-using-htmlcss-in.html
ReplyDelete04BC8DF7
ReplyDeleteForum
Forum
Forum
Forum
Forum
Forum
Forum
Forum
Forum
Using REST with SharePoint to implement custom paging for a DataTable is a practical example of combining client-side functionality with data retrieval from a SharePoint list. The step-by-step approach of creating an Employee list, adding data, and placing the required script in Site Assets makes the implementation easy to follow.
DeleteWorking with REST endpoints is an important skill when building applications that need to retrieve and manage structured data. A RESTful API Course can help developers understand concepts such as API requests, responses, and integrating services into application workflows.
The DataTable interface also requires a good understanding of JavaScript to handle dynamic data, pagination, and user interactions. Javascript Online Training can provide a foundation for writing the client-side logic needed for interactive web components.
DeleteFor developers looking to extend these concepts into modern component-based applications, ReactJS Training can be a useful next step. Overall, the example demonstrates how REST-based data access and frontend scripting can work together to create a more usable SharePoint data interface.
DeleteRadiantly your efforts in maintaining win32diskimager.io content deserve recognition because every page is informative and accessible. The download process is uncomplicated, the instructions are practical, and visitors can confidently rely on the website for accurate software information whenever needed without uncertainty.
ReplyDeleteRadiantly, this impressive platform features xamppdownload.org content that is practical, organized, and incredibly easy to follow. Every visit provides valuable insights, dependable downloads, and helpful installation instructions, making the website an outstanding resource for developers of every experience level.
ReplyDeleteCommendably your website offers reliable guidance ultraviewerdownload.org Desktop Support in a clean, organized, and professional format. Every page demonstrates careful planning and attention to detail. The overall browsing experience feels seamless, making this platform highly valuable for users seeking dependable information.
ReplyDelete