J'utilise deux jqgrids dans une page. la deuxième grille j’ai utilisé loadonce: true
puisque j’ai besoin de trier les colonnes dans la deuxième grille. J'ai besoin de recharger les deux grilles après un retour de serveur. (nécessité d'afficher la valeur mise à jour dans la deuxième grille). La première recharge de grille est correcte car elle n'utilise pas l'attribut loadonce
. Ma question est la suivante: pouvons-nous utiliser les attributs loadonce
et reloadGrid
ensemble? (en définissant l'attribut loadonce
de manière dynamique sur la grille) ou dois-je choisir un tri côté serveur dans ce cas? s'il vous plaît des conseils. Merci d'avance.
Si vous utilisez loadonce:true
jqGrid, modifiez les paramètres datatype
en "local" après le premier chargement de données à partir de la grille. Tous les rechargements de grille suivants (tri, pagination, filtrage) fonctionnent en local. Si vous souhaitez actualiser les données de grille à partir du serveur une fois de plus, vous devez définir datatype
sur sa valeur d'origine ('json' ou 'xml'). Par exemple:
$("#list").setGridParam({datatype:'json', page:1}).trigger('reloadGrid');
UPDATED:Free jqGrid supporte l'option fromServer: true
de reloadGrid
à partir de la première version (à partir de la version 4.8). Donc, on peut utiliser le code comme
$("#list").trigger("reloadGrid", { fromServer: true, page: 1 });
faire comme ci-dessus. Le principal avantage: ce code fonctionne bien avec n'importe quelle valeur initiale de datatype
("json"
, "jsonp"
, "xml"
et ainsi de suite). Free jqGrid enregistre la valeur originale de datatype
à l'intérieur de dataTypeOrg
interne avant de la changer en "local"
.
Une autre option utile de free jqGrid est le paramètre reloadGridOptions
de navGrid
, qui permet de spécifier les options par défaut de reloadGrid
. Ainsi on peut utiliser par exemple
loadonce: true,
navOptions: { reloadGridOptions: { fromServer: true } }
options de jqGrid, qui définissent les valeurs par défaut pour navGrid
en plus. En conséquence, cliquer sur le bouton "Recharger" de la barre de navigation rechargera la grille du serveur au lieu du rechargement local.
$("#shoppingCatalog").jqGrid('GridUnload');
Supprime la structure et votre code peut ensuite reconstruire la grille avec les données du prochain rappel du serveur.
Juste pour dire, pour moi, la ligne suivante ne suffisait pas, pour actualiser les données dans mon loadonce:true
jqGrid:
$("#MikesGrid").jqGrid('setGridParam', { datatype: 'json' }).trigger('reloadGrid');
Après avoir appelé cette ligne, j'ai essayé d'appeler mon code qui a chargé mes données JSON et rempli la jqGrid
avec, mais cela n'a pas actualisé les lignes de ma grille.
Ma solution consistait à forcer décharger le jqGrid, et then appeler ma fonction pour la recréer.
$("#MikesGrid").jqGrid('GridUnload');
Peut-être que j'étais juste malchanceux.
Au fait, quand j'en aurai l'occasion, je documenterai comment j'ai écrit une fonction JavaScript générique pour ajouter deux boutons à un jqGrid, un pour actualiser les données (loadonce) et un second pour exporter les données jqGrid dans un vrai fichier Excel. , en utilisant ma bibliothèque:
Exporter jqGrid dans un fichier Excel
J'aime le code réutilisable!
Nice essayait depuis une semaine, la solution est parfaite Use
jQuery("#datalist").jqGrid().setGridParam(
{
datatype:'xml',
page:1,
url : '<%=request.getContextPath()%>/PreviewReport?cmd=1&fromdate='+vfromDate+'&todate='+vtoDate+'&status='+vstatus+'&keyword='+vkeyword+'&mdn='+vmdn+'&filetype='+vfiletype
}
).trigger("reloadGrid");
recharger les données avecloadonce:false