jqGrid - Boutons Ajouter / Modifier par défaut - Réponse du serveur de traitement
-
22-07-2019 - |
Question
Je travaille sur ma première implémentation d'un jqGrid . J'utilise les boutons d'ajout / modification standard qui apparaissent dans navGrid, mais je ne parviens pas à identifier la procédure de traitement de la réponse du serveur lorsque je clique sur Soumettre dans les formulaires de modification / ajout.
.navGrid("#product-codes-footer",{edit:true,add:true,del:false},
{afterShowForm:afterShowEdit}, {afterShowForm:afterShowAdd} );
Existe-t-il un paramètre standard de rappel ou d'événement qui me manque quelque part à ce sujet? Existe-t-il un moyen de définir le mode d’appel de saveRow
ou existe-t-il une méthode de rappel succès / erreur par défaut que je peux implémenter?
N'importe quelle direction serait très appréciée !!!
La solution
Il semble y avoir quelques paramètres d'événement que je n'ai pas réussi à lire et à comprendre complètement ...
API - > http://www.trirand.com/jqgridwiki/doku.php ? id = wiki: form_editing # editgridrow
L’utilisation des paramètres d’événement pour afterSubmit et afterComplete me permet de traiter la réponse du serveur et de mettre à jour le formulaire.
- Dan
EDIT Voici un exemple du code utilisé ...
.navGrid(
"#product-codes-footer",
{edit:true,add:true,del:false},
{
afterShowForm:afterShowEdit,
afterSubmit:processAddEdit,
beforeSubmit:validateData,
closeAfterAdd: true,
closeAfterEdit: true
},
{
afterShowForm:afterShowAdd,
afterSubmit:processAddEdit,
beforeSubmit:validateData,
closeAfterAdd: true,
closeAfterEdit: true
}
);
function afterShowEdit(formId) {
//do stuff after the form is rendered
}
function afterShowAdd(formId) {
//do stuff after the form is rendered
}
function processAddEdit(response, postdata) {
var success = true;
var message = ""
var json = eval('(' + response.responseText + ')');
if(json.errors) {
success = false;
for(i=0; i < json.errors.length; i++) {
message += json.errors[i] + '<br/>';
}
}
var new_id = "1";
return [success,message,new_id];
}
Autres conseils
Il y a plusieurs façons dont j'ai pu le faire:
jQuery("#search_results").jqGrid({ url: host, datatype: "xml", mtype: "GET", // Handy to see the params passed. height: 200, width: 500, ... ... etc gridComplete: function() { var ids = jQuery("#search_results").getDataIDs(); if (ids.length Empty Result'); } else { $('#jqgrid_error').hide(); } }, loadError: function(xhr,st,err) { jQuery("#jqgrid_error").html("Type: "+ st +"; Response: "+ xhr.status + " "+xhr.statusText+''); } }).navGrid('#search_results_pager', {edit:true,add:false,del:false,search:true}, { afterComplete:processed, // processed is a function you define closeAfterEdit: true, reloadAfterSubmit:true } );
Extrait de la documentation:
afterComplete Cet & nbsp; événement & nbsp; se déclenche immédiatement après & nbsp; toutes les & nbsp; actions & nbsp; et & nbsp; événements & nbsp; sont & nbsp; terminés & nbsp; et & nbsp; la & nbsp; rangée & nbsp; est & nbsp; insérée & nbsp; ou & nbsp; mise à jour & nbsp; dans & nbsp; la & nbsp; grille & nbsp ;. afterComplete (serverResponse, & nbsp; postdata, & nbsp; formidable) & nbsp; où
- réponse & nbsp; les & nbsp; données & nbsp; renvoyées & nbsp; par & nbsp; par le & nbsp; serveur & nbsp; (si & nbsp; n'importe lequel)
- postdata & nbsp; un tableau, & nbsp; les & nbsp; données & nbsp; envoyées & nbsp; à & nbsp; au & nbsp; serveurs & nbsp; envoyés & nbsp; à & nbsp;
- formidable est & nbsp; est le & nbsp; id & nbsp; du & nbsp; formulaire & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;
gridComplete
Ce & nbsp; déclenche & nbsp; après & nbsp; toutes & nbsp; les & nbsp; données & nbsp; est & nbsp; chargé & nbsp; chargé & nbsp; dans & nbsp; la & nbsp; grille & nbsp; toutes & nbsp; & & nbsp;
les processus & nbsp; sont & nbsp; complets.
loadError xhr, st, err
Une & nbsp; fonction & nbsp; être & nbsp; appelée & nbsp; appelée & nbsp; si & nbsp; la & nbsp; demande & nbsp; échoue. & nbsp; La & nbsp; requête & nbsp; échoue. & nbsp; La & nbsp; demande & nbsp; échoue. & nbsp;
Trois & nbsp; arguments: & nbsp; XMLHttpRequest & nbsp; objet & nbsp; (XHR), & nbsp; une & nbsp; chaîne & nbsp;
décrivant & nbsp; le & nbsp; type & nbsp; erreur & nbsp; (st) & nbsp; que & nbsp; s'est produit & nbsp; et & nbsp; une & nbsp; facultative & nbsp; une & nbsp; facultative & nbsp;
exception & nbsp; objet & nbsp; (err), & nbsp; si & nbsp; un & nbsp; un & nbsp; une.
Il existe des documents PDF pratiques / utiles (un peu datés): http://www.scribd.com/doc/17094846/jqGrid .
Vous pouvez essayer ceci:
navGrid('#gridpager',{view:true},{},{closeOnEscape:true},{afterSubmit:processAddEdit});
$.jgrid.search={
odata : ['equal', 'not equal', 'less', 'less or equal','greater','greater or equal', 'begins with','does not begin with','is in','is not in','ends with','does not end with','like','does not contain'],
sopt:['eq','ne','cn','bw','ew']
}