Comment obtenir jqGrid reload pour aller au serveur?
Question
Nous utilisons le bouton de rechargement du navigateur jqGrid sur une grille avec l'ensemble de loadonce
à true.
Le bouton reload actuellement ne date pas au serveur pour obtenir les données - comment pouvons-nous obtenir le reload pour aller au serveur pour obtenir les dernières données
Je crois que nous pouvons utiliser le beforeRefresh
pour rappel ensemble la grille data
à json
au lieu de local
mais je ne suis pas clair comment configurer la méthode même de beforeRefresh
- Je ne comprends pas vraiment la documentation
La solution
Vous n'êtes pas la seule personne qui a le problème. Je Answerd la même question avant. Pour recharger le contenu de la grille à partir du serveur, vous devez réinitialiser le paramètre datatype
à la valeur d'origine « JSON » ou « xml », puis rafraîchir la grille. Par exemple
jQuery("#list").jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid');
MISE À JOUR : Pour appeler l'intérieur de la ligne de gestionnaire d'événements de BeforeRefresh vous pouvez le faire suivant
jQuery("#list").jqGrid('navGrid','#pager',
{ edit:false,view:false,add:false,del:false,search:false,
beforeRefresh: function(){
alert('In beforeRefresh');
grid.jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid');
}
});
Je modifié un exemple de vieille question h. si vous cliquez sur le bouton de rafraîchissement que vous pouvez voir en direct comment le travail code.
2 À JOUR : gratuit jqGrid prend en charge de nouvelles options. événement reloadGrid
supports paramètre fromServer: true
qui peut être utilisé pour forcer le rechargement des données à partir du serveur et navGrid
supports option reloadGridOptions
qui peuvent être utilisés pour spécifier les options de reloadGrid
utilisées sur cliquez sur le bouton Rafraîchir. Ainsi, le code ci-dessus pourrait être
$("#list").jqGrid("navGrid", {
edit: false,
add: false,
del: false,
search: false,
reloadGridOptions: { fromServer: true }
});
Par une façon peut utiliser l'option de navOptions
de jqGrid pour spécifier les options par défaut de navGrid
(voir l'article wiki). Il permet d'écrire quelque chose comme code
$("#link").jqGrid({
// all typical jqGrid parameters
datatype: "json", // or "xml"
loadonce: true,
pager: true, // no empty div for page is required
navOptions: {
edit: false,
add: false,
del: false,
search: false,
reloadGridOptions: { fromServer: true }
}
}).jqGrid("navGrid");
Autres conseils
J'ai essayé la configuration suivante et il fonctionne.
<script type="text/javascript">
jQuery(function() {
jq("#YOUR-GRID-ID").jqGrid({
...
loadonce: true,
...
});
jQuery("#refresh_YOUR-GRID-ID").click(function(){
jQuery("#YOUR-GRID-ID").setGridParam({datatype: 'json'});
jQuery("#YOUR-GRID-ID").trigger("reloadGrid");
});
});
</script>