jqgrid aggiunge una riga e invia i dati al servizio web per l’inserimento

Sono stato in grado di estrarre dati dal mio DB utilizzando jQuery / Ajax da un webservice in jQGrid. Ora vorrei inviare i dati aggiunti / modificati al servizio web. Ho visto alcuni esempi usando PHP e il comando editurl :. Funzionerà anche per i servizi web (come il modo in cui ho tirato giù i dati in origine)?

Ho esaminato più volte gli esempi. Ho anche trovato un’altra domanda simile a quella che sto chiedendo, ma non sono in grado di trovare esempi reali su come fare ciò di cui ho bisogno. Esiste?

: AGGIORNAMENTO:

jQuery(document).ready(function () { jQuery("#list").jqGrid({ datatype: processrequest, mtype: 'POST', jsonReader: { root: "ListExercise", //arry containing actual data page: "Page", //current page total: "Total", //total pages for the query records: "Records", //total number of records repeatitems: false, id: "ID" //index of the column with the PK in it }, colNames: ['Id', 'Exercise'], colModel: [ { name: 'exercise_id', index: 'exercise_id',editable:false }, { name: 'exercise_value', index: 'exercise_value',editable:true } ], caption: 'MyFitnessApplication', pager: '#pager', rowNum: 10, rowList: [10, 20, 30], sortorder: "desc", viewrecords: true, height: '250px', loadonce: true, editurl: "../webService/exercise_ws.asmx/insertRecord" }).navGrid('#pager', { edit: true, add: true, del: false }); }); 

Come puoi vedere ho aggiunto il tag editurl. Sembra chiamare il mio webservice. Ora mi manca come passare i parametri attuali al webservice. Mi manca qualcosa e l’aiuto è apprezzato!

Prima di tutto è ansible modificare alcune opzioni predefinite utilizzate per aggiungere / modificare:

 jQuery.extend(jQuery.jgrid.edit, { ajaxEditOptions: { contentType: "application/json" }, recreateForm: true, serializeEditData: function (postData) { if (postData.exercise_value === undefined) { postData.exercise_value = null; } return JSON.stringify(postData); } }); 

(dove JSON.stringify è le funzioni definite in http://www.json.org/js.html ). Quindi i dati, che verranno inviati al server, saranno codificati JSON. È ansible utilizzare quasi le stesse impostazioni per l’eliminazione

 jQuery.extend(jQuery.jgrid.del, { ajaxDelOptions: { contentType: "application/json" }, serializeDelData: function (postData) { if (postData.exercise_value === undefined) { postData.exercise_value = null; } return JSON.stringify(postData); } }); 

Ora puoi definire insertRecord come segue

 [WebMethod, ScriptMethod(ResponseFormat = ResponseFormat.Json)] public int ModifyData (string exercise_value, string oper, string id) { if (String.Compare (id, "_empty", StringComparison.Ordinal) == 0 || String.Compare (oper, "add", StringComparison.Ordinal) == 0) { // TODO: add new item with the exercise_value and return new id // as the method result } else if (String.Compare (oper, "edit", StringComparison.Ordinal) == 0) { // TODO: modify the data identified by the id } else if (String.Compare (oper, "del", StringComparison.Ordinal) == 0) { // TODO: delete the data identified by the id } } 

Non hai scritto quale tipo ha exercise_id : intero o stringa. Se usi id stringa il codice sopra dovrebbe essere cambiato un po ‘.