Les lignes sont dupliquées lorsque j’ai déjà utilisé idPrefix

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:

entrez la description de l'image ici

Un instantané de ce à quoi l’interface ressemble:

entrez la description de l'image ici

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:

  • les éléments de données doivent avoir des identifiants uniques et vous devez indiquer correctement à jqGrid quelle valeur de l’élément est l’identifiant.
  • les données renvoyées par le serveur doivent être correctement sortingé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" }