我目前正在使用 DataTables 的服务器端选项,我的当前问题是数据表中的页码只显示 1。为了进一步说明,这是我的代码:
Javascript:
var oTable1 = $('#users-table').dataTable({
"bDestroy": true,
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "/v1/users",
"bPaginate": true,
"aoColumns": [
{ "mData": "id" },
{ "mData": "username" },
{ "mData": "name" },
{ "mData": "acctype" },
{ "mData": "country" },
{ "mData": "createdAt" },
{ "mData": "button" }
]
});
/v1/users:
viewAll: function(req, res, next) {
var colS = "";
switch(req.query.iSortCol_0){
case '0': colS = 'id'; break;
case '1': colS = 'username'; break;
case '2': colS = 'firstname'; break;
case '3': colS = 'acctype'; break;
case '4': colS = 'country'; break;
case '5': colS = 'createdAt'; break;
default: break;
};
var options = {
sort: colS+' '+req.query.sSortDir_0,
or: [
{ acctype: { 'contains': req.query.sSearch }},
{ id: { 'contains': req.query.sSearch }},
{ username: { 'contains': req.query.sSearch }},
{ lastname: { 'contains': req.query.sSearch }},
{ firstname: { 'contains': req.query.sSearch }},
{ country: { 'contains': req.query.sSearch }},
{ createdAt: { 'contains': req.query.sSearch }}
],
limit: req.query.iDisplayLength
};
console.log(req.query);
console.log(req.query.sSearch);
//console.log(options);
var p = req.query.iDisplayStart+1;
//console.log(req.query.iDisplayStart);
Users.find(options).paginate({ page: p, limit: req.query.iDisplayLength }).exec(function(err, usr){
if(err){
res.send(500, { error: 'DB error' });
} else {
var retuser = [];
usr.forEach(function(user){
retuser.push({ id: user.id, username: user.username, name: user.firstname+" "+user.lastname, acctype: user.acctype, country: user.country, createdAt: user.createdAt, button: "<a class='blue' href='#view-user' data-toggle='modal' id='user-info'> <i class='icon-zoom-in bigger-130'></i></a>" });
});
Users.count().exec(function(err, result){
var json = {
aaData: retuser,
iTotalRecords: result,
iTotalDisplayRecords: usr.length
};
res.contentType('application/json');
res.json(json);
});
}
});
},
基本上发生的是:当我在
.paginate({ page: p, limit: req.query.iDisplayLength })
中将页面更改为2时,它显示应显示在第2页的内容,如果我更改为1,则显示应显示在第1页的内容。当更改要显示的记录数时,它显示第11条记录。因此,我想从控制器检索数据的方式没有问题。
我以为DataTables会根据 iTotalDisplayRecords
和 iTotalRecords
自动添加页码,但事实并非如此。我的代码有问题还是我之前的想法有误,需要我在我的DataTable中添加页码?