2011-04-11 3 views
1

Je sais que cela semble simple pour certaines personnes là-bas. J'ai également essayé ce one. mais pour une raison quelconque, je ne peux vraiment pas actualiser et voir mon nouvellement ajouté, édité et supprimé dans jqgrid.comment charger les nouvelles données ajoutées dans jqgrid

Je crée un bouton dans mon programme qui ajouterait, éditerait et supprimerait et après cela, il rafraîchirait mon jqgrid et afficherait les changements que j'ai faits dans leur. par exemple, j'ai ajouté de nouvelles données. dans la première tentative, il affichera les données nouvellement ajoutées mais dans la deuxième fois, il ne s'affichera plus. mes données d'édition et de suppression ne seront pas actualisées également. voici le code:

function Edit(){ 
    var selected = $("#list1").jqGrid('getGridParam', 'selrow'); 
    var dat = { 
    "ID": 'xyz', 
    ... 
    "keyFields": [{"..."}] 
    };     
    update(dat); 
    $('#list1').trigger('reloadGrid'); 
} 

function update(dat){ 
    $.ajax({ 
    type: 'GET', 
    url: 'mydata.php?' + $.param({path:'this/update',json:JSON.stringify(dat)}), 
    dataType: Settings.ajaxDataType, 
    success: function(data) { 
     if ('error' in data) 
     { 
     alert('ERROR']); 
     } 
    } 
    }); 
} 

côté serveur est ok et mis à jour tout ce que je fais à l'écran. quand je le fais d'abord avec le bouton d'ajout seulement, il n'y a aucun problème du tout. problème est survenu seulement après mon bouton d'édition et de suppression. J'espère que quelqu'un peut m'aider à comprendre cela.

Répondre

3

Vous n'avez posté aucune définition du jqGrid que vous utilisez, donc je peux seulement dire ce qui ne va pas dans le code que vous avez posté.

Le premier problème est que vous devez placer $('#list1').trigger('reloadGrid'); ligne intérieur de success poignée de $.ajax appel de votre fonction update. Ce n'est qu'après la mise à jour des données sur le serveur que vous devez déclencher le rechargement de la grille.

Le deuxième problème possible, vous pouvez avoir si vous utilisez le paramètre loadonce:true qui modifie la valeur initiale du paramètre datatype du jqGrid à datatype:'local'. Si vous utilisez loadonce:true et avez besoin de recharger les données depuis le serveur, vous devez réinitialiser le paramètre datatype de jqGrid à sa valeur initiale ('xml' ou 'json' dépend de ce que vous utilisez) et seulement recharger la grille par rapport à ' reloadGrid '. Pour modifier le datatype, vous pouvez utiliser la méthode setGridParam de jqGrid.

+0

hhhmmm, ça marche maintenant ... pourquoi ne pas y penser? merci encore Oleg. tu m'as toujours sauvé. merci aussi pour les conseils et les nouvelles connaissances – jayAnn

+0

@jayAnn: Vous êtes les bienvenus! – Oleg

Questions connexes