Sur une seule page, j’ai plusieurs grids où certaines des valeurs sont identiques / interrogées à partir de la même firebase database. Pendant que la grid continue de se rafraîchir, je reçois des lignes en double. Pourquoi donc? Les lignes en double disparaissent lorsque j’actualise la page.
J’ai utilisé:
idPrefix: $(gridObject).attr('id') + "_" // gridObject is a reference to a particular jqGrid
pour chaque jqGrid
sur la page, mais les identifiants de ligne sont dupliqués comme indiqué ci-dessous:
Un instantané de ce à quoi l’interface ressemble:
Il ne devrait y avoir que 2 en-têtes de groupe, dhoop
et afshan
. Quelle pourrait être la raison de cela? J’utilise jqGrid 4.6.0
Je ne veux pas écrire trop de critiques sur le code que vous avez posté. Je ne décris que la partie qui concerne le problème que vous avez posté.
Il me semble que le code serveur renvoie des données incorrectes à jqGrid. Vous chargez les données du serveur (le datatype
n’est pas "local"
). Cela signifie que le code du serveur doit préparer les données pour le regroupement. Il est important de comprendre deux choses de base pour charger les données:
Si vous utilisez par exemple les options groupingView: {groupField: "column1", ...}
et sortname: "column2"
les données doivent être sortingées par column1, column2
sur le serveur. Je veux dire que le premier critère de sorting doit être le champ de regroupement (champs) (la colonne column1
) et le second critère de sorting doit être la column2
(de sortname: "column2"
). Je suppose que les données ne sont pas correctement sortingées sur le backend. Votre description du problème: “Je reçois des lignes en double. Pourquoi? Les lignes en double disparaissent lorsque j’actualise la page de manière sérieuse.” laisse supposer cela.
Secondes, vous avez écrit dans le commentaire de votre question que le format de chaque élément de données renvoyé se {"JobID":"1","FileName":" ","StartIndex":"0","EndIndex":"0","SplitIndex":"0","Duration":"0","FileSize":"0","LogStatus":" ","Name":"afshaan"}
comme {"JobID":"1","FileName":" ","StartIndex":"0","EndIndex":"0","SplitIndex":"0","Duration":"0","FileSize":"0","LogStatus":" ","Name":"afshaan"}
. Je peux deviner que la valeur de la propriété JobID
est unique pour chaque élément. Dans le cas, le bon jsonReader
serait
jsonReader: { repeatitems: false, id: "JobID" }
jsonReader
indique à jqGrid comment parsingr les éléments des données d’entrée. Vous utilisez plutôt le jsonReader
suivant
jsonReader : { root: "rows", records: "records", viewrecords: true, repeatitems: true, cell: "", id: "0" }
ce qui semble être faux.
De plus, vous utilisez le paramètre de datatype
de jqGrid défini en tant que fonction. Tous les exemples de code que je vois sur stackoverflow et qui utilise le datatype
de datatype
comme fonction étaient faux. Les exemples proviennent d’anciennes démos créées pour une très ancienne version de jqGrid (version 3.6 ou antérieure). Je vous recommande ssortingctement d’utiliser plutôt le datatype: "json"
. Il me semble que vous devez simplement append l’option ajaxGridOptions: { contentType: "application/json" }
et utiliser le bon jsonReader
. Je peux deviner que cela pourrait être quelque chose comme
jsonReader: { root: "responseJSON.rows", page: "responseJSON.page", total: "responseJSON.total", records: "responseJSON.records", repeatitems: false, id: "JobID" }