Mysql
 sql >> Database >  >> RDS >> Mysql

jqGrid Act Strange Ricarica i dati dopo l'inserimento e l'aggiornamento

Ho verificato il codice che hai utilizzato e ho trovato il motivo. Avevi id problema duplicato nel tuo codice . Hai definito <table> elemento utilizzato per jqGrid come segue

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

Ha "location" come id . Successivamente hai definito

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}     
],

dove il nome location verrà utilizzato come nome della colonna. Il problema è che il nome della colonna verrà utilizzato per creare id nome dei diversi elementi della griglia. Inoltre la modifica del modulo utilizza il nome della colonna direttamente come id valore del <input> campo che rappresenta la posizione . Dopo l'utilizzo di Aggiungi modulo il seguente elemento

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

esiste nella pagina con id="location" anche. Se l'utente chiude il modulo verrà nascosto, ma non distrutto. Perché il modulo di modifica verrà inserito nella pagina prima <table id="location"> il prossimo $("#location tbody:first") utilizzato in la linea non trovi più la tabella e la griglia resta vuota.

Quello che dovresti fare è semplicemente rinominare <table id="location"> a qualcosa come <table id=" grid-location">` o scegli un altro nome. Dovresti aggiornare il codice JavaScript corrispondente.

Altre modifiche che dovrebbero essere fatte nella griglia:

  • cambia jsonReader: {repeatitems: true, idms_location: "idms_location" } a jsonReader: {id: "idms_location" } .
  • aggiungi gridview: true opzione.
  • aggiungi autoencode: true opzione.
  • rimuove le opzioni non esistenti add:true, del:true proprietà da colModel
  • rimuovi index proprietà da colModel .
  • dovresti correggere Content-Type Intestazione HTTP che utilizzi nella risposta del server con i dati JSON. Dovrebbe essere Content-Type: application/json invece di Content-Type: text/html che usi attualmente. È solo una riga di codice PHP.
  • puoi rimuovere {edit:true,add:true,del:true} opzioni di navGrid - sono le opzioni predefinite.