Els ASHX han de permetre actualitzar dades i aquesta funció s'encarrega d'actualitzar el registre que està mostrant actualment un formulari. Es poden donar molts casos, per exemple que el formulari mostri dades de més d'una sola taula. No passa res, quan es cridi a les funcions de deserialització corresponents cadascuna agafarà els camps que li pertoca. La única condició es que els camps del formulari tinguin noms diferents. Igual que al serialitzar no importa que el formulari tingui 5 camps o 50, el cost de programació (en aquest punt) és el mateix. La informació sobre els camps a recuperar estarà en una classe derivada de la clsDades. També acostuma a passar que els camps que es mostren en un formulari no són tots els que es mostren al formulari, llavors el que es fa és carregar el registre amb un GET prèviament i després deserialitzar només els camps que s'actualitzen fent un UPD. L'exemple que es mostra a continuació és aquest cas. També en aquesta funció es sol afegir lògica de verificació que sigui de negoci (la típica de camps buits, números i dates es posa al navegador).
private void UpdateData()
{
Resp.ContentType = "plain/text";
Req.ContentEncoding = Encoding.GetEncoding("UTF-8");
try
{
clsClassificacio ClassificacioTA = new clsClassificacio(ConnStr);
DataTable TBL;
DataRow DR;
Dictionary<string, string> Params = new Dictionary<string, string>();
string pPK_Classificacio = Req["PK_Classificacio"];
string Errors = ComprovacionsDadesUpdateInsert();
if (Errors != "")
{
Resp.Write(Errors);
}
else
{
Params.Add("PK_Classificacio", pPK_Classificacio);
TBL = ClassificacioTA.GET(Params);
DR = TBL.Rows[0];
ClassificacioTA.Deserialize(DR, Req);
ClassificacioTA.UPD(DR);
Resp.Write("Update Classificacio OK");
}
}
catch (Exception Err)
{
Resp.Write("ERROR: " + Err.Message);
}
}
|