jqgrid côté client, tri avec le côté serveur de pagination des données disparaît

il est dit dans jqgrid de la documentation que le code ci-dessous devrait permettre de poste local avec le serveur pagination côté;
la grille de données disparaît sur la pagination; cette question a été posée avant avec pas de réponse claire - suggestions pour l'utilisation loadonce:true signifie que la pagination est désactivée - j'ai besoin de pagination

ÉDITÉ plus TARD POUR MONTRER COMPLÈTE de la page html et la réponse json
(Im maintenant en cours d'exécution à partir d'un php/mysql backend).

ma page html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>JQGrid Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../dojoproject/jquery-ui-1.8.16.custom/css/start/jquery-ui-1.8.16.custom.css">
<link rel="stylesheet" type="text/css" href="jquery.jqGrid-4.3.1/css/ui.jqgrid.css">
<style type="text/css">
html, body {
margin: 0;
padding: 0;
font-size: 90%;
}
</style>
<script type="text/javascript" src="../dojoproject/jquery-ui-1.8.16.custom/js/jquery-1.6.2.min.js" ></script>
<script type="text/javascript" src="../dojoproject/jquery-ui-1.8.16.custom/js/jquery-ui-1.8.16.custom.min.js" ></script>
<script type="text/javascript" src="jquery.jqGrid-4.3.1/js/i18n/grid.locale-en.js" ></script>
<script type="text/javascript" src="jquery.jqGrid-4.3.1/js/jquery.jqGrid.min.js" ></script>
<script type="text/javascript" src="../dojoproject/jqGrid-4.1.2/js/JSON-js/json2.js" ></script>
<script>
$(function() {
$('#table').jqGrid({
jsonReader : {
repeatitems: false,
cell:"",
id:"0"
},   
height:'auto',
url:'/jqgrid/orderdetails.php',
postData:{test:'value'},
datatype: 'json',
mtype: 'POST',
rownumbers:true,
rownumWidth:35,
colNames:['OrderID','UnitPrice','Quantity','Discount','ProductName'],
colModel :[ 
{name:'OrderID', index:'OrderID',search:false,sorttype:'integer'}, 
{name:'UnitPrice', index:'UnitPrice',editable:true,sorttype:'float'}, 
{name:'Quantity', index:'Quantity',sorttype:'int'}, 
{name:'Discount', index:'Discount',sorttype:'int'},
{name:'ProductName', index:'ProductName'}   
],
sortname: 'OrderID ',
rowNum:5,
sortorder: 'asc',
width:'100%',
height:'200',
viewrecords: true,
gridview: true,
caption: 'NorthWind Orders',
scrollOffset:18,
multiselect:true,
pager:'pager'
,cellEdit:true,
cellsubmit:'clientArray',
afterSaveCell:function(rowid, cellname, value, iRow, iCol){
},
onPaging: function() {
$("#table").setGridParam({datatype:'json'}).trigger("reloadGrid");
},               
loadComplete: function (data) {  
$("#table").setGridParam({datatype:'local'}).trigger("reloadGrid");
} 
});
});
</script>
</head>
<body>
<table id='table'></table>
<div id='pager'></div>
</body>
</html>

réponse sur la 1ère charge est

{"page":"1","total":431,"records":2155,"rows":[{"OrderID":"1024811","UnitPrice":"14.0000","Quantity":"12","Discount":"0"},{"OrderID":"1024842","UnitPrice":"9.8000","Quantity":"10","Discount":"0"},{"OrderID":"1024872","UnitPrice":"34.8000","Quantity":"5","Discount":"0"},{"OrderID":"1024914","UnitPrice":"18.6000","Quantity":"9","Discount":"0"},{"OrderID":"1024951","UnitPrice":"42.4000","Quantity":"40","Discount":"0"}]}

réponse à partir de la page 2:

{"page":"2","total":431,"records":2155,"rows":[{"OrderID":"1025041","UnitPrice":"7.7000","Quantity":"10","Discount":"0"},{"OrderID":"1025051","UnitPrice":"42.4000","Quantity":"35","Discount":"0.15"},{"OrderID":"1025065","UnitPrice":"16.8000","Quantity":"15","Discount":"0.15"},{"OrderID":"1025122","UnitPrice":"16.8000","Quantity":"6","Discount":"0.05"},{"OrderID":"1025157","UnitPrice":"15.6000","Quantity":"15","Discount":"0.05"}]}
La raison du problème pourrait être non seulement un bug dans jqGrid, mais aussi le bug dans les données fournies par la partie serveur, formateurs que vous utilisez dans le colModel et ainsi de suite. Pourriez-vous inclure plus de la définition complète de la jqGrid et aussi deux réponse JSON retourné par le serveur: la première sera de répondre à la demande de la première page et la deuxième réponse JSON à partir de la demande de la deuxième page. Avoir toutes les données que l'on peut reproduire votre problème. Néanmoins, personnellement, je a moins de sens, en combinaison avec le local de tri et de côté de serveur d'échange.
Je préfère client de tri pour éviter la nécessité de mettre en œuvre côté serveur de tri, plus de performance, à moins que quelqu'un propose une douleur colonne multi serveur de tri (et multi colonne de recherche :-)) à l'aide de linq to sql
La réponse JSON qui vous avez posté n'est pas complet, donc il ne peut pas être utilisé pour reproduire le problème. Je vois maintenant que vous utilisez scroll:1 qui, dans ce n'est pas la pagination des données. le défilement virtuel. Je pense que vous devriez supprimer l'option de faire le programme de travail. Le tri des données sur le côté serveur est beaucoup plus efficace du point de vue des performances. En outre, si la demande de l'utilisateur pour obtenir la première page de données triée par venir colonne, vous devez trier les données en premier et ensuite obtenir la première page des résultats à fournir la bonne réponse.
Qui multi colonne de tri que vous devez avoir dans l'exemple?
Grâce oleg, j'ai juste ajouté le défilement après le 1er à poster la question, normal pagination vs de défilement ne fait aucune différence à mon problème de tri. Je vais modifier à la demande de charge plus petite donc réponse complète n'est pas ridiculuosly grand ici. Je wdnt l'esprit et sera probablement dans une phase ultérieure de serveur de build côté de tri, à la recherche d'un élégant côté serveur de la solution de recherche et de tri par colonnes variables (à l'aide de linq to sql - je n'aime pas voir trop..si les conditions de vérification pour la recherche et le tri des paramètres)

OriginalL'auteur Pete_ch | 2012-01-27