2010-10-03 7 views
6

Je dois passer userData à jqgrid, mais je ne trouve aucun exemple de procédure à suivre. Voici ma tentative:Comment lire userData dans jqgrid?

envoyés par le serveur:

{ total: 25, 
    page: currentpage, 
    userData: {foo: 'bar'}, 
    rows: myRows } 

et jqGrid:

var data = jQuery("#grid").getGridParam('userData'); 

Comment puis-je envoyer userData et lire à partir jqGrid?

EDIT: Je sais que mon userData est en cours d'envoi, car je peux le voir en Fiddler. Je pense que je suis juste coincé sur la façon de le lire du côté client. Par défaut, jqGrid accepte JSON dans ce format.

Répondre

16

En général, l'utilisation de userData est assez simple. jqGrid vous permet d'envoyer à partir du serveur des données supplémentaires qui seront enregistrées avec les données jqGrid. Donc, si jqGrid analyse les données renvoyées par le serveur, alors il cherche simplement userdata (pas pour userData !!!) et sauvegarder est dans le paramètre interne userData.

{ "total":25, 
    "page":1 
    "records":107, 
    "userdata": {"foo": "bar"}, 
    "rows": [...] } 

Attention: la propriété par défaut dans les données d'entrée doit être userdata et PASuserData comme vous actuellement. Vous pouvez remplacer le nom par défaut de la propriété d'entrée jsonReader: {userdata: "userData"} ou jsonReader: {userdata: "myData"} si vous utilisez userData ou myData comme nom de propriété avec votre additional data.

Un de l'utilisation standard de userData est pour displaying of the footer dans le jqGrid. Vous pouvez utiliser les données pour vos autres propositions. Dans another answer, il est montré comment utiliser userData pour sélectionner la ligne/lignes directement après le chargement des données du serveur.

Si vous utilisez le paramètre loadonce:true, l'utilisation de userData sera un peu plus délicat car après la première charge les données du paramètre userData seront supprimés, de sorte que vous devez y enregistrer dans l'objet externe.

De cause, vous pouvez accéder au userData en ce qui concerne jQuery("#grid").getGridParam('userData') seulement après le chargement des données. Donc, vous devriez le faire à l'intérieur de loadComplete gérer des événements ou plus tard. Par le biais de la poignée d'événement loadComplete à l'intérieur, vous pouvez accéder à toutes les données qui vous sont envoyées à partir du serveur par l'intermédiaire du paramètre data de l'événement loadComplete. Vous pouvez donc lire d'autres données supplémentaires et les enregistrer quelque part.

+1

Merci.Au cas où quelqu'un le lirait plus tard, le résumé est que, quand on parle d'un GridParam, c'est 'userData', sinon c'est' userdata'. Lit 'userdata' dans le gestionnaire d'événements' loadComplete'. Pour définir 'postData' avec' userdata', faites ceci: 'loadComplete: function (données) {jQuery (" # ticketlist "). SetGridParam ({postData: {foo2: data.userdata.foo}})}' – royco

+0

@Slack : Vous pouvez également utiliser 'jQuery (" # grid "). GetGridParam ('userData')' à l'intérieur de 'loadComplete' comme' loadComplete: function() {jQuery ("# ​​ticketlist"). SetGridParam ({postData: {foo2: jQuery ("# ​​grid"). getGridParam ('userData'). foo}});} '. Il est seulement important de comprendre que dans les données envoyées par le serveur, il faut placer 'userdata' et les données seront sauvegardées dans le paramètre' userData' de jqGrid. Il peut donc être accessible via 'getGridParam ('userData')'. Mais le plus important, que maintenant votre programme fonctionne et peut utiliser 'userdata' /' userData'. :-) – Oleg

+0

homme J'ai utilisé userData au lieu de userdata dans le générateur json et je suis devenu fou, merci beaucoup! +1 – Neo

1

{"rows": 
    [{"foo":"bar"}] 
} 

et la mise en place des options jqGrid vous faire quelque chose comme ceci:

$("#cashflow-sheet").jqGrid({ 
    url:'bbc-json.html', 
    datatype: "json", 
     ... 
+0

Merci pour votre message. En fait, jqgrid fonctionne bien et peut afficher des lignes sans problème. J'ai omis ce code. Ce que je ne comprends pas, c'est comment utiliser la fonction 'userData' de jqgrid. Cela vous permet d'envoyer un tableau de données utilisateur du serveur à la grille. – royco