Comment puis-je conserver les filtres de recherche dans jqGrid rechargement de la page?
J'ai trouvé beaucoup de discussions qui ont été proches de ce dont j'ai besoin, et cette question est la
le plus proche Comment puis-je définir postData._search de vrai dans la demande en jqGrid?.
Que je suis aux prises avec presque le même problème, et juste ne peut pas le faire je veux setup "recherche" et "filtres" pendant le chargement initial de la jqGrid - dire, sur le rechargement de la page, et j'ai mes filtres stockées dans la session, et j'ai essayé tout ce que j'ai trouvé dans Oleg exemples - il ne fonctionne tout simplement pas!
C'est ce que je suis en train de faire -
loadBeforeSend: function (xhr) {
var grid = jQuery('#' + block_id);
var postData = grid.jqGrid('getGridParam','postData');
jQuery.extend(postData,{filters:MyFilters});
grid.jqGrid('setGridParam', {search: true, postData: postData});
console.log(grid.jqGrid('getGridParam','postData'));
}
La console impression montre que les filtres sont en place, mais la _search est toujours faux, et le message est envoyé, même sans filtre:
_search false
block_id report_block_1table
nd 1297451574526
page 1
rows 25
sidx id
sord desc
Cependant, si j'ai mis exactement le même code - avec l'ajout de
grid.trigger("reloadGrid");
ligne - dans certaines bouton onClickButton fonction, et, plus tard, cliquez sur le bouton tout fonctionne, mais j'ai besoin pour le faire fonctionner sur "recharger la page"!
Des idées? C'est me rend fou...
OriginalL'auteur Oleg Ivanov | 2011-02-11
Vous devez vous connecter pour publier un commentaire.
Il me semble que vous n'êtes pas la première personne à qui poser la même question. J'ai demandé récemment sur la clôture question (lu beaucoup de commentaires pour la réponse). Un autre vieille réponse y compris la démo pourrait probablement répondre à certaines de vos questions ouvertes.
Votre code à l'aide de
beforeRequest
ne fonctionne pas tout simplement parce que la fonctionbeforeRequest
sera caled immédiatement avant l'appel ajax et de l'évolution de lasearch
paramètre est trop tard. En outre overwiting defilters
à chaque fois est probablement pas la meilleure idée. Dans le cas où l'utilisateur ne sera pas en mesure de définir d'autres de la grille du filtre.Donc je peux le répéter, que la réalisation de la solution dont vous avez besoin est très simple. Vous devez juste mettre
filters
propriété de lapostData
paramètre de jqGrid pour le filtre dont vous avez besoin et de définir un autre jqGrid paramètresearch:true
de plus. C'est tout! Plus tard, l'utilisateur sera en mesure d'ouvrir l'avance dialogue rechercher et remplacer les filtres. L'utilisateur peut également cliquer sur le bouton "Reset" de l'avance à la recherche de dialogue et de définirfilters
à la chaîne vide etsearch:false
.Pour une meilleure compréhension, je dois effacer comment
search
paramètre ou une autre jqGrid sera utilisé dans l'URL. Il y a des paramètre prmNames de jqGrid qui définit les noms des paramètres envoyer comme une partie de l'URL ou une partie des données publiées sur le serveur. La valeur par défaut de prmNames contenirsearch:"_search"
et le code de l'intérieur remplir fonction utilisée par jqGrid a l'simplifiée suivante fragment de code:où
De façon à mettre en
_search
paramètre de l'URL de l'un devrait mettresearch
paramètre de jqGrid.Regarder la démonstration suivante. Vous pouvez facilement vérifier en utilisant Fiddler de Firebug que le jqGrid à partir de la page envoyer HTTP GET à l'url suivante:
Pour faire exactement ce dont vous avez besoin. Le code de la démo contient le fragment de code suivant:
[manqué de temps sur l'édition du commentaire précédent] - quand j'ai mis ma recherche/filtre params dans le grille-init arguments, il a totalement fait tout le travail. Merci, j'apprécie vraiment votre aide!
Ivanov: Vous êtes les bienvenus!
OriginalL'auteur Oleg
@Oleg Oleg réponse fonctionne comme un charme, mais seulement pour la première fois.
Pour moi quand je recharge la grille, les filtres et l'indicateur de recherche ne sont pas mis en place.
Avec le code suivant à chaque fois que je recharge la grille, il envoie aussi les filtres et l'indicateur de recherche.
- Je l'utiliser côté serveur tri et la pagination.
Je suis en utilisant:
Sur la définition de la grille:
OriginalL'auteur Pedro Robles