【发布时间】:2017-06-02 10:32:15
【问题描述】:
在我的网页中,我使用datatable 来显示记录。但是当我尝试显示数据时,数据显示正确但分页数错误。
我的代码是
oTableSp = $('#specials-table').dataTable({
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": <myUrl>',
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"iDisplayLength":25,
"lengthMenu": [ 25, 50, 75, 100 ],
"dom": '<"top"f>rt<"bottom row"<"col-md-3"l><"col-md-3"i><"col-md-6"p>>',
"columns": [
{
data: "SpecialName"
},
{
data: "SpecialFrom"
},
{
data : "SpecialTo"
},
{
data : "SpecialBanner"
},
// {
// data : "TermsAndConditions"
// },
{
data: "Actions",
"bSortable" : false,
"aTargets" : [ "no-sort" ]
}
],
"oLanguage": {
"sProcessing": "<img src='../assets/admin/img/ajax-loader_dark.gif'>"
},
"aaSorting": [],
"aoColumnDefs": [
{
"targets": [0,3],
"bSortable" : false
},
],
"dom": '<"top"f>rt<"bottom row"<"col-md-3"l><"col-md-3"i><"col-md-6"p>>',
'fnServerData': function (sSource, aoData, fnCallback) {
sSource = sSource;
aoData.push({
name: 'csrf_tbd_token',
value: tbd_csrf
});
$.ajax
({
'dataType': 'json',
'type': 'POST',
'url': sSource,
'data': aoData,
'success': fnCallback
});
},
'fnCreatedRow': function( nRow, aData, iDataIndex ) {
$(nRow).attr('data-id',aData['Id']);
},
"fnRowCallback" : function(nRow, aData, iDisplayIndex){
var html = status_html(aData["active"]);
$("td:eq(4)", nRow).prepend(html);
},
fnDrawCallback: function( oSettings ) {
$(".pagination li").removeClass("ui-button ui-state-default");
$(".first.disabled, .previous.disabled, .next.disabled, .last.disabled, .fg-button.active").off( "click" );
$(".first.disabled a, .previous.disabled a, .next.disabled a, .last.disabled a, .fg-button.active a").attr('href','javascript:void(0);');
$.ajax({
url: <myUrl>',
type: 'POST',
dataType: 'json',
data:{},
success: function(data){
if(data.result == 1){
data.message = jQuery.parseJSON(data.message);
$.each(data.message, function(index, element) {
$('tr[data-id="'+element+'"]').find('.actions').prepend('<a class="approve-sp-all" data-status="1" href="#" title="Approve"><i class="fa fa-fw fa-med fa-thumbs-o-down" style="color:#FF0000"></i></a>');
});
$('#specials-table tr').each(function(){
var elm = $(this);
var data_id = elm.attr('data-id');
if(jQuery.inArray(data_id, data.message) === -1){
$('tr[data-id="'+data_id+'"]').find('.actions').prepend('<a data-status="0" href="#" title="Approved"><i class="fa fa-fw fa-med fa-thumbs-o-up" style="color:#3c763d"></i></a>');
}
});
}
},
error: function(){
}
});
}
});
当我查看检查元素部分时,它正在显示
但是在aaData 中只有两条记录可以显示。我错过了什么吗?请告诉我。
任何帮助都将不胜感激
【问题讨论】:
-
据我了解,当您将 serverSide 设置为 true 时,它期望信息由 ajax 响应提供。由于您没有使用内置的ajax,它只是不知道分页等。看看datatables.net/manual/server-side
-
@Bindrid,感谢您的回复。会检查
-
@Bindrid,
sAjaxSource是 ajax url,它是正确的。只有计数是错误的 -
服务器端函数在
iTotalRecords和iTotalDisplayRecords中没有返回正确的值——我怀疑1234是硬编码的测试数据。能贴出函数的代码吗? -
您使用的是旧版本的 DataTables?我可以发布我最复杂的表格,但它适用于 1.10 版
标签: datatable pagination datatables