2011-04-06 5 views
3

J'ai été bloqué sur ce problème pour les 2 derniers jours. A fait beaucoup de googling mais n'a pas pu trouver la réponse exacte.JQGrid filterToolbar

Voici la définition jqGrid

$("#tblresults").jqGrid({ 
      datastr: data, 
      datatype: 'jsonstring', 
      height: 230, 
      colNames: colNames, 
      colModel: colModel, 
      rowNum: -1, 
      viewrecords: true, 
      loadComplete: function() { 
       ChangeSize('#tblresults', 70); 
      } 
     }); 

Et ceci est la définition du filtre

$("#tblresults").filterToolbar({ searchOnEnter: true, stringResult: true, defaultSearch: "cn", groupOp: "AND" }); 

Je reçois les données à partir d'un simple appel getJSON. Mais quand j'essaie d'utiliser le filtre, rien ne fonctionne. J'ai débogué un code et j'ai découvert que jqgrid appelle en interne le reloadgrid, ce qui fait disparaître les données.

Quelqu'un peut-il me dire comment pouvons-nous filtrer complètement dans jqgrid sur le client. J'utilise v3.8 et j'ai appris que jqgrid v3.7 avait cette logique de filtrage côté client en place.

Merci à l'avance

Répondre

3

Avez-vous des données tout d'abord vous ne devriez pas utiliser -1 comme valeur de rowNum. Au lieu de cela, utilisez une valeur fiable comme rowNum:1000. Il serait préférable d'utiliser la pagination de données locale. Dans le cas, vous devez simplement définir par exemple rowNum:10, rowList:[5,10,20,100].

Si vous obtenez les paramètres d'entrée colNames, colModel et data paramètres de jqGrid du serveur par ajax vous appelez devez en outre envisager d'utiliser data paramètre au lieu de datastr. Dans le cas où le datatype devrait être changé de 'jsonstring' à 'local'.

D'autres paramètres communs tels que gridview:true et height:'100%' peuvent également vous être utiles. Le premier (gridview:true) vient améliorer la performance sans aucun inconvénient et le second (height:'100%') suivra pour choisir la hauteur de grille optimale sans la barre de défilement verticale. Il peut être bon combiné avec la pagination de données locale (paramètres tels que rowNum:10, rowList:[5,10,20,100]).

+0

J'ai lu quelque part que rowNum = -1 montrera tous les enregistrements dans la grille et c'est mon exigence. Le nombre d'enregistrements ne dépassera pas 200 dans tous les cas, donc la barre de défilement verticale est très bien. Je voudrais essayer de changer le type de données et les paramètres de données et voir si cela fonctionne. Mais pour l'instant j'ai utilisé l'ancienne approche de filtrage des enregistrements sur le serveur. – Nilesh

+0

@Nilesh: La valeur 'rowNum = -1' pourrait être OK si vous envoyez la valeur au serveur. La valeur était ancienne dans les versions de jqGrid (<3.7), à propos de la valeur 200 comme nombre de lignes. Est-il vraiment nécessaire de remplir la partie de la fenêtre du navigateur avant que l'utilisateur ne fasse défiler la fenêtre? Si vous utilisez 'rowNum: 10' au lieu de' rowNum: 200', la grille sera prête 20 fois rapidement. L'utilisateur est-il capable de lire et ** d'analyser ** les 200 lignes de la grille? Probablement, le tri et le filtrage (voir [filtrage de la barre d'outils] (http://www.trirand.com/jqgridwiki/doku.php?id=wiki:toolbar_searching) seront meilleurs pour l'utilisateur et on peut utiliser la pagination. – Oleg

0

ajoutez ces paramètres et votre recherche de barre d'outils devrait fonctionner. J'ai aussi fait face à un problème similaire quand j'ai commencé avec jqgrid.

search:true, 
loadonce:true, 
Questions connexes