jqGrid - Pagination not working properly

lucasdc picture lucasdc · Nov 28, 2013 · Viewed 14k times · Source

As you can see in this image

enter image description here

I have 13 records on my DB but the pager says it has only 1 page (with 10 rows), which is not correct.

Relevant part of the code from my .js

function cria(){
$("#grid").jqGrid({
    datatype: 'json',
    url: 'json.jsp',
    jsonReader: {repeatitems: false},
    pager: '#paginado',
    rowNum: 10,
    rowList: [10,20,30],
    emptyrecords: "Não há registros.",
    recordtext: "Registros {0} - {1} de {2}",
    pgtext: "Página {0} de {1}",
    colNames:['Código','Descrição'],
    colModel:[
        {name:'codigo', width:80, sorttype:"int", sortable: true, editable: false},
        {name:'descricao', width:120, sortable: true, editable: true, editrules:{required:true}}
    ],
    viewrecords: true,
    editurl:"dadosGrid.jsp?edit=true",
    caption: "Grupos",
    hiddengrid: true
});             

$("#grid").jqGrid('navGrid','#paginado',{},
    {edit:true,url:"Adm?aux=edit",closeAfterEdit:true,reloadAfterSubmit:true},
    {add:true,url:"Adm?aux=add",closeAfterAdd:true,reloadAfterSubmit:true},             
    {del:false},
    {search:true},
    {refresh:true});    
};

Relevant part of the code from my .jsp

String json = "[";
for (UserAux user : users ){
    json += "{";
    json += "\"codigo\":\""+user.getCod()+"\",";
    json += "\"descricao\":\""+user.getDescricao()+"\",";
    json += "},";
}
json = json.substring(0,json.length()-1);   
json += "]";                        
out.println(json);  
%>

Answer

Oleg picture Oleg · Nov 28, 2013

Default options of jqGrid means that you implements server side paging. If you want to returns all data at once from the server (which would be good choice if you have 13 records) you should just add loadonce: true option.

Additionally I would recommend you to add gridview: true, autoencode: true and height: "auto" option to your jqGrid. Moreover you should remove edit:true, del:false, search:true and refresh:true which you use inside of options navGrid because you use there on the wrong place. If you want to specify the options you should specify properties of the second parameter (which is {} in your code).