Una part fonamental del desenvolupament web és guardar les dades. En la part client això consisteix en enviar les dades a la part servidora, en el cas que ens ocupa els ASHX.
Com tots els formularis de l'aplicació web envien les dades de la mateixa manera, tots fan servir la mateixa funció: SubmitFrm.
Aquesta funció és força senzilla i fa servir la serialització de jQuery per empaquetar els camps d'un formulari i posteriorment enviar-los al servidor amb Ajax. Normalment la URL on s'envia porta informat el paràmetre "action" amb el valor "update". D'aquesta manera la part servidora fa un UpdateData que invoca a un UPD de la clsDades (bé de fet de la clase derivada corresponent).
A vegades també és necessari efectuar alguna operació un cop s'han guardat les dades. Per exemple recarregar el grid perque refresqui els valors o bé posar el valor de la clau primària generada en un "insert" a la variable que toca. Per això estan els paràmetres pPostSubmit i pFunctionPostSubmit. El primer és un booleà que indica si s'ha de fer algo més després de guardar les dades i el segon és la funció que s'ha de cridar.
Normalment aquesta funció SubmitFrm es crida des del botó Guardar.
$("#frmDetall #btnSave").click(function () {
SubmitFrm('#frmDetall', 'classificacions.ashx?action=insert', true, ClassificacioPostInsert);
});
La funció en si mateixa no té gaire complicació:
function SubmitFrm(pForm, pURL, pPostSubmit, pFunctionPostSubmit) {
if (pPostSubmit === undefined) pPostSubmit = false;
if ($(pForm).validate().form()) {
var frmdata = $(pForm).serialize();
$.ajax({
type: "POST",
url: pURL,
data: frmdata,
dataType: "text",
contentType: "application/x-www-form-urlencoded; charset=ISO-8859-1",
success: function (data, textStatus) {
if (data.indexOf("ERROR:") != -1) {
$("#ui-dialog-title-dialogErr").html("Error guardant les dades");
$("#errmsg").html(data);
$("#dialogErr").dialog("open");
}
else {
$("#ui-dialog-title-dialogOK").html("Dades guardades correctament");
$("#okmsg").html("Dades guardades correctament.");
$("#dialogOK").dialog("open");
if (pPostSubmit) {
if (pFunctionPostSubmit !== undefined) pFunctionPostSubmit(data);
}
}
}
});
}
}
Una funció PostSubmit d'exemple podria ser:
function ClassificacioPostInsert(pData) {
evPK_Classificacio = pData;
jQuery("#grdClassificacions").jqGrid().trigger("reloadGrid");
ClassificacioUpdate(pData);
}
Aquesta funció actualitza la variable global que té la clau primaria (PK), refresca el grid i posa el formulari en mode "actualitzar". Dins del paràmetre pData arriba la PK que és l'únic que envia un Insertar desde la part servidora. Una funció NNNNNNNPostUpdate és més senzilla ja que només té la línia que refresca el grid. |