javascript - tutorial - jsgrid




jqGrid rend la table vide (2)

Par défaut, jqGrid ne s'attend pas à ce que les données de la clé de la cellule contiennent des appariements nom: valeur. Si vous voulez utiliser les appariements nom: valeur, vous devrez utiliser l'option jsonReader et définir repeatitems sur false. assurez-vous également que chaque clé porte exactement le même nom que le nom colModel correspondant.

Difficile à dire sans plus de code. Vous devriez publier tout votre code lorsque vous posez des questions comme celle-ci, mais essayez quelque chose comme ceci avec toutes les autres options que vous définissez ...

$("#id").jqGrid({
    url: "url"
    mtype: "post",
    datatype: "json",
    jsonReader: {
        repeatitems: false,
        root: "response.rows",
        cell: "cell",
        id: "id",
        page: "page",
        total: "total",
        records: "records"
    },  
});

Il semble que vous ne transmettez pas une clé d'enregistrement, ce qui correspond au nombre total de lignes renvoyées par votre appel côté serveur

J'ai essayé de rendre une table en utilisant jqGrid 4.1.2, je suis capable d'obtenir la réponse JSON du côté serveur, mais je reçois une table vide. Voici mes exemples de données JSON:

{
    "response":{
        "total":2,
        "page":1,
        "rows":[{
                "id":135060,
                "cell":{
                    "id":135060,
                    "name":"12"
                }
            },
            {
                "id":115060,
                "cell":{
                    "id":115060,
                    "name":"12345"
                }
            }
        ]
    },
    "status":"SUCCESS",
    "errors":[]
}

J'ai ajouté le fichier jqgrid-locale-en.js , ce qui ne devrait pas être le problème. Après avoir passé un peu de temps là-dessus, je pense que cela a quelque chose à voir avec le format JSON attendu par jqGrid. Si c'est le problème, quelqu'un peut-il me dire comment configurer jqGrid pour accepter le format JSON ci-dessus?

Merci!


Dans le cas où le problème n'est toujours pas résolu, voici la solution. Vous devriez utiliser jsonReader suivant:

jsonReader : {
    repeatitems : false,
    root: 'response.rows',
    page: 'response.page',
    total: 'response.page',
    records: function (obj) { return obj.response.rows.length; }
}

alors les données seront lues (voir la démo ). Je suppose que vous avez utilisé la propriété total dans les données JSON incorrecte et ne définissez pas la propriété records du tout.

De plus, vous ne devez pas définir de messages d'erreur dans la réponse standard. Le protocole HTTP prend en charge les codes d'état . Si vous avez détecté une erreur côté serveur, le serveur doit définir le code HTTP d'erreur dans l'en-tête HTTP. Dans le cas où l'ordre du traitement des données dans jqGrid est différent, vous devez utiliser l'événement loadError pour décoder le message d'erreur et afficher les résultats pour l'utilisateur.





jqgrid