Mysql
 sql >> Base de données >  >> RDS >> Mysql

jqGrid Act Strange rechargeant les données après l'insertion et la mise à jour

J'ai vérifié le code que vous avez utilisé et trouvé la raison. Vous aviez id problème de duplication dans votre code . Vous avez défini <table> élément utilisé pour jqGrid comme suit

<table id="location"><tr><td /></tr></table>
<div id="pager-location"></div>

Il a "location" comme id . Plus tard, vous avez défini

colModel: [
    {name:'idms_location',index:'idms_location', width:150, editable:true,add:true, del:true, key:true},
    {name:'location',index:'location', width:800,editable:true, add:true, del:true}     
],

où le nom location sera utilisé comme nom de colonne. Le problème est que le nom de la colonne sera utilisé pour construire id nom des différents éléments de la grille. De plus l'édition du formulaire utilise le nom de la colonne directement comme id valeur du <input> champ qui représente l'emplacement . Après utilisation du formulaire Ajouter l'élément suivant

<input name="location" class="FormElement ui-widget-content ui-corner-all" id="location" role="textbox" type="text">

existe sur la page avec id="location" aussi. Si l'utilisateur ferme le formulaire, il sera masqué, mais pas détruit. Parce que le formulaire d'édition sera placé sur la page avant <table id="location"> le prochain $("#location tbody:first") utilisé dans la ligne ne trouve plus la table et la grille reste vide.

Ce que vous devez faire est simplement de renommer <table id="location"> à quelque chose comme <table id=" grid-location">` ou choisissez un autre nom. Vous devez mettre à jour le code JavaScript correspondant.

Autres modifications à effectuer dans la grille :

  • modifier jsonReader: {repeatitems: true, idms_location: "idms_location" } à jsonReader: {id: "idms_location" } .
  • ajouter gridview: true option.
  • ajouter autoencode: true option.
  • supprimer les options inexistantes add:true, del:true propriétés de colModel
  • supprimer index propriétés de colModel .
  • vous devez corriger Content-Type En-tête HTTP que vous utilisez dans la réponse du serveur avec les données JSON. Il devrait être Content-Type: application/json au lieu de Content-Type: text/html que vous utilisez actuellement. C'est juste une ligne de code PHP.
  • vous pouvez supprimer {edit:true,add:true,del:true} options de navGrid - ce sont les options par défaut.