web-dev-qa-db-fra.com

jqgrid reloadGrid avec loadonce défini sur true

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.

18
Sam

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.

68
Oleg
$("#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!

0
Mike Gledhill

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

0
Kiran Jujare