How can I set the total number of data items in my grid using a function?

I've tried various ways to set the total number of records in the Kendo-UI Web Grid, without success.

I'm kind of lost on where I spend the amount processed in ajax, already assigns the total value in the schema for 4 to see if it happens more paging did not work, just shows the two records and it shows that there are more pages.

If anyone could help me I would be very grateful!

...
transport: {
    read: function (option) {
       $.ajax({
       url: '<?=$view->encode('ctrl.php?turma=lista_turma');?>',
       data:{
          skip: option.data.skip,
          take: option.data.take,
          pageSize: option.data.pageSize,
          page: option.data.page,
          sorting: JSON.stringify(option.data.sort),
          filter: JSON.stringify(option.data.filter)
       },
       success: function (result) {
           option.success(JSON.parse(result));
       },
       error: function (result) {
          alert(result);
       }
    },
    schema: {
       data: 'data',
       total: function (data) {
           return 4;
       },
       /*total: function (result) {
          alert('aqui');
          result = result.d || result;
          return 4;
       },*/
       model: { id: "id_turma" },
          fields: {
             id_turma: { validation: { required: true } },
             nome_turma: { validation: { required: true } },
             sigla_turma: { validation: { required: true, max:12 } }
          }
          }
       },
       pageable: true,
       serverPaging: true,
       serverFiltering: true,
       serverSorting: true,
       batch: true,
       pageSize: 2
});

Upvotes: 0

Views: 9634

Answers (1)

Lars H&#246;ppner
Lars H&#246;ppner

Reputation: 18402

I'm not sure what you're trying to do with all those "eval" statements in your code. This looks like you're overcomplicating things a lot.

If you do server-side paging, the total should be returned from the server since the client typically doesn't know how many more records there are. If your response contains a property "total", then this should work:

schema: {
    total: "total" // total is returned in the "total" field of the response
}

or this, if you want to use a function:

schema: {
    total: function(response) {
        return response.total; // total is returned in the "total" field of the response
    }
}

Both taken from the docs: http://docs.kendoui.com/api/framework/datasource#configuration-schema.total

Here's a working example: http://jsfiddle.net/lhoeppner/y6KdK/

Upvotes: 2

Related Questions