服务器端处理Jquery数据表Sharepoint



我有一个>50000 SharePoint Online文档库列表正在使用下面的工作代码进行渲染。页面加载时间接近10-15秒。

我尝试实现服务器端处理来减少页面加载时间,但是没有效果:

"processing": true, "serverSide": true,

<!DOCTYPE html>    
<html">    
<head>    
<script type="text/javascript" src="<SPO_SITE>/SiteAssets/js/jquery-3.5.1.js"></script>        
<script type="text/javascript" src="<SPO_SITE>/SiteAssets/js/jquery.dataTables.min.js"></script>     
<script type="text/javascript" src="<SPO_SITE>/SiteAssets/js/moment.min.js"></script>     
<script type="text/javascript" src="<SPO_SITE>/SiteAssets/js/datetime-moment.js"></script>      
<script type="text/javascript" src="<SPO_SITE>/SiteAssets/js/dataTables.buttons.min.js"></script>       
<script type="text/javascript" src="<SPO_SITE>/SiteAssets/js/buttons.flash.min.js"></script>            
<script type="text/javascript" src="<SPO_SITE>/SiteAssets/js/jszip.min.js"></script>        
<script type="text/javascript" src="<SPO_SITE>/SiteAssets/js/pdfmake.min.js"></script>      
<script type="text/javascript" src="<SPO_SITE>/SiteAssets/js/vfs_fonts.js"></script>            
<script type="text/javascript" src="<SPO_SITE>/SiteAssets/js/buttons.html5.min.js"></script>        
<script type="text/javascript" src="<SPO_SITE>/SiteAssets/js/buttons.print.min.js"></script>        
<script type="text/javascript" src="<SPO_SITE>/SiteAssets/js/dataTables.select.min.js"></script>    
<script type="text/javascript" src="<SPO_SITE>/SiteAssets/js/dataTables.searchBuilder.min.js"></script> 
<link rel="stylesheet" type="text/css" href="<SPO_SITE>/SiteAssets/css/jquery.dataTables.min.css">    
<link rel="stylesheet" type="text/css" href="<SPO_SITE>/SiteAssets/css/dataTables.jqueryui.min.css">      
<link rel="stylesheet" type="text/css" href="<SPO_SITE>/SiteAssets/css/buttons.dataTables.min.css">  
<link rel="stylesheet" type="text/css" href="<SPO_SITE>/SiteAssets/css/select.dataTables.min.css">  
<link rel="stylesheet" type="text/css" href="<SPO_SITE>/SiteAssets/css/searchBuilder.dataTables.min.css">  
<script>
$(document).ready(function() {loadItems();});    
function loadItems() {    
var siteUrl = _spPageContextInfo.siteAbsoluteUrl;    
var oDataUrl = siteUrl + "/_api/web/lists/getbytitle('LIST_NAME')/items?$top=200000&$select=Created,ATA,EncodedAbsUrl";    
$.ajax({    
url: oDataUrl,    
type: "GET",    
dataType: "json",    
headers: {    
"accept": "application/json;odata=verbose"    
},    
success: mySuccHandler,    
error: myErrHandler    
});    
}    

function mySuccHandler(data) {    
try {    

$('#table_id').DataTable({    
"pageLength": 100,
"dom": 'Bfrtip',
"buttons": [ {extend: 'searchBuilder', config: {columns: [0,1,2,3,4,5,6,7],},}, 'copy', 'csv', 'pdf', {extend: 'print',exportOptions: {columns: [ 0, 1, 2, 3, 4, 5, 6, 7 ]}} ],
"aaData": data.d.results,
"aaSorting": [[0, "desc"]],
"aoColumns": [  
{    
"mData": "Created"
},             
{    
"mData": "ATA"    
},             
{    
"mData": "EncodedAbsUrl",
"mRender": function ( data, type, full )
{return '<a href="'+data+'" target="_blank">View</a>';}             
}
]    
});    
} catch (e) {    
alert(e.message);    
}    
}    

function myErrHandler(data, errMessage) {    
alert("Error: " + errMessage);    
}   
</script>
</head>    
<body>    
<div> 
<table id="table_id" class="display" cellspacing="0" width="100%">    
<thead>    
<tr>    
<th>Uploaded</th>    
<th>ATA</th>
<th></th>           
</tr>    
</thead>    
</table>    
</div>    
</body>    
</html>   

您必须设置后端代码,因为服务器端意味着您必须在客户端的每个操作(更改页面,过滤器,搜索,…)上处理服务器上的Datatable行

更多信息请访问:https://datatables.net/examples/data_sources/server_side

最新更新