5
votes

I'm trying to make Angularjs Datatable server side pagination in this link https://l-lin.github.io/angular-datatables/#/serverSideProcessing

So I use this code

    $scope.dtOptions = DTOptionsBuilder.newOptions()
       .withOption('ajax', {
                  dataSrc: function(json) {
                    conole.log(json)
                    json['recordsTotal'] =json.length
                    json['recordsFiltered'] = json.length
                    json['draw']=1
                    conole.log(json)
                    return json;
                  },
              url: 'api/footestrecords',
              type: 'GET'
           })
       .withOption('processing', true)
       .withOption('serverSide', true)
       .withPaginationType('full_numbers');

I added recordsTotal, recordsFiltered and row manually in dataSrc parameter

and this is json data before and after add recordsTotal, recordsFiltered and row

json data before add

[Object, Object, Object, Object, Object, Object, Object, Object,
Object,Object, Object, Object, Object, Object, Object, Object, Object,
Object, Object, Object, Object, Object, Object, Object, Object, Object,
Object, Object]

json data after add

 [Object, Object, Object, Object, Object, Object, Object, Object,
  Object, Object, Object, Object, Object, Object, Object, Object, Object,
  Object, Object, Object, Object, Object, Object, Object, Object, 
  Object,Object, Object, recordsTotal: 28, recordsFiltered: 28, draw: 1]

the probelm is pagination don't work ,data table shows all data in one page,and when I click on paging button did no action.

3
You made error here: conole.logzygimantus

3 Answers

10
votes

Returned JSON format should be:

{
    data: [{Object},{Object},{Object},{Object}…]
    draw: "1"
    recordsFiltered: 91
    recordsTotal: 91
}

You can get a complete tutorial from here about Datatables server-side paging, sorting and filtering in angularjs

1
votes

Remove .dataSrc and use this option:

.withDataProp(function(json) {
  console.log(json);
  json.recordsTotal = json.response.total;
  json.recordsFiltered = json.response.total;
  json.draw = 1;
  return json.response.data;
})

Change json.response according your object.

0
votes
The return data must be list of object ["data"]=[{name:john,id:1},{name:jason,id:2}].

Try
  .withOption('ajax', {
                  dataSrc: function(data) {                 
                   return data.data;
                     }
                  })
Else,
       .withOption('ajax', {
                  "dataSrc": "data"
                  }