Dins les aplicacions web, ha d'haver-hi alguna forma d'enviar les peticions d'eliminació de registre de la part client a la part servidora (als ASHX). En Javascript faig servir una crida Ajax de jQuery per fer aquesta tasca. De fet crec que és la part més senzilla de tot plegat.
En el post de la creació de controls ja hi ha el codi que assigna al botó "Eliminar" la funció que s'encarrega de fer la eliminació (valgui la redundància). Aquí es tracta d'explicar en detall la funció DeleteElem.
DeleteElem rep varis paràmetres:
- pForm: El identificador del formulari on està el registre que es vol eliminar
- pURL: la URL que ha d'invocar en la part servidora, normalment conté el paràmetre action amb el valor "delete"
- pID: la clau primària que serveix per invocar l'eliminació. Si està composta per diferents camps cal posar-los separats per un guió "-" i s'han de correspondre al camps del formulari amb el mateix nom.
- pPostDelete: un booleà que indica si ha de cridar a una funció posterior a l'eliminació.
- pFunctionPostDelete: la funció posterior a la eliminació.
- pMissatge: un missatge que surt per pantalla un cop s'ha eliminat (per defecte surt un lacònic "Element eliminat correctament").
Com sempre el codi:
function DeleteElem(pForm, pURL, pID, pPostDelete, pFunctionPostDelete, pMissatge) {
var Missatge = "Element eliminat correctament";
if (pPostDelete === undefined) pPostDelete = false;
if (pMissatge !== undefined) Missatge = pMissatge;
var PK = pID.split("-");
var PKURL = "";
jQuery.each(PK, function(i, val) {
PKURL += "&" + val + "=" + $("#" + val).val();
});
$.ajax({
type: "GET",
url: pURL + PKURL,
success: function (data, textStatus) {
if (data.indexOf("ERROR:") != -1) {
$("#ui-dialog-title-dialogErr").html("Error eliminant dades");
$("#errmsg").html(data);
$("#dialogErr").dialog("open");
}
else {
$("#ui-dialog-title-dialogOK").html("Element eliminat");
$("#okmsg").html(Missatge);
$("#dialogOK").dialog("open");
if (pPostDelete) {
if (pFunctionPostDelete !== undefined) pFunctionPostDelete(data);
}
}
}
});
}
Normalment la funció postDelete el que fa és netejar el formulari i posar-lo en mode inserció. Seria algo així:
function BlogPostDelete(pData) {
jQuery("#grdPosts").jqGrid().trigger("reloadGrid");
PostsInsert();
}
|