2013-11-28 2 views
4

Как вы можете видеть в этом образеjqGrid - Разбивка не работает должным образом

enter image description here

У меня есть 13 записей на моей БД, но пейджер говорит, что есть только одна страница (с 10 строк), которая не является верный.

Соответствующая часть кода из моих .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});  
}; 

Соответствующая часть кода из моего .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); 
%> 

ответ

8

Параметры по умолчанию из jqGrid означает, что реализует стороне сервера подкачки. Если вы хотите сразу вернуть все данные с сервера (что было бы хорошим выбором, если у вас есть 13 записей), вы должны просто добавить loadonce: true.

Дополнительно я бы порекомендовал вам добавить gridview: true, autoencode: true и height: "auto" вариант вашего jqGrid. Кроме того, вы должны удалить edit:true, del:false, search:true и refresh:true, которые вы используете внутри опций navGrid, потому что используете там неправильное место. Если вы хотите указать параметры, вы должны указать свойства второго параметра (который находится в вашем коде {}).

+0

Я попытался добавить loadonce: true, gridview: true, и я также перенес свои параметры navGrid внутри {}. Ни один из вариантов (add, edit, del) не работает сейчас, похоже, что он не может оштрафовать их URL. – lucasdc

+0

@lucasdc: использование 'loadonce: true' только должно решить вашу проблему уже. Что вы подразумеваете под «похоже, что он не может оштрафовать свой URL»? Если вы используете неправильные URL-адреса, в сетке данные не должны отображаться. Текст вашего вопроса, который я интерпретирую так, чтобы страница * first * отображалась правильно, и у вас есть только проблема с поисковым вызовом. Поэтому, пожалуйста, подтвердите правильность отображения первой страницы сетки. – Oleg

+0

Моя первая страница отображается корректно. Как я показал на моем изображении, у меня было 13 записей (это будет гораздо больше в будущем, например 10k +), первая страница показывает 10 записей, но в сетке указано, что есть только 1 страница записей, но на самом деле должно быть 2 страницы (10 + 3). Стрелки не доступны для кликов, но если я выберу, чтобы показать 20 строк, остальные 3 (которые должны быть на 2-й странице) отображаются в сетке. То, что я имею в виду, «похоже, что он не может найти свой url», заключается в том, что я считаю, что способ, которым вы показали мне передать параметры (например, это): {edit: true, del: false, search: true} не работает – lucasdc

Смежные вопросы