Ciaouz a tutti
ho un problemi con delle aspx.
Allora premetto come ho lavorato:
Ho una classe Database (dll) nella quale ho inserito diverse funzioni per inserire,cercare,cancellare e aggiornare dati su un database.
Il DB è Access.
Nel DB ho delle SP alle quali passo i miei valori per eseguire le query (@param1,@param2,ecc).
Le query su Access funzionano perfettamente quando gli si passano i valori nei parametri.
Nella mia pagina .ASPX cosa ho fatto:
Eseguo una ricerca in una tabella secondo dei criteri,popolo un datalist,poi controllo gli eventi OnEditCommand,OnDeleteCommand,OnUpdateCommand,OnCa ncelCommand ed assegno a questi ultimi le sub relative per fare quello che il comando dice (Editare,Eliminare,Aggiornare,Cancellare).
Fin qui tutto ok, i comandi eseguono le sub e in effetti editano,cancellano,annullano MA NON FANNO L'UPDATE!!!!!
PERCHE' ?????
Praticamente questa è la sub che gestisce l'aggiornamento dei dati:
Sub UpdateNegozio (obj as object, e as DatalistCommandEventArgs)
'Gestione del comando OnUpdateCommand del controllo Datalist1
Dim strconn,ne_nome,ne_icona,ne_coordx,ne_coordy,ne_in dirizzo,ne_cap,ne_citta,ne_tel,ne_fax,ne_email,ne_ desc,ne_foto1,ne_foto2,ne_img_banner,ne_txt_banner ,ne_img_logo,ne_sito as string
Dim ID_Negozio,ne_id_tipologia,ne_online,ne_new,ne_sch eda,ne_banner,ne_logo as integer
ID_Negozio = datalist1.DataKeys.Item (e.item.itemindex)
ne_nome = cTYPE( e.Item.FindControl("BOX_NE_NOME"),textbox).text
ne_id_tipologia = cTYPE( e.Item.FindControl("BOX_NE_ID_TIPOLOGIA"),textbox) .text
ne_icona = cTYPE( e.Item.FindControl("BOX_NE_ICONA"),textbox).text
ne_coordx = cTYPE( e.Item.FindControl("BOX_NE_COORDX"),textbox).text
ne_coordy = cTYPE( e.Item.FindControl("BOX_NE_COORDY"),textbox).text
ne_indirizzo = cTYPE( e.Item.FindControl("BOX_NE_INDIRIZZO"),textbox).te xt
ne_cap = cTYPE( e.Item.FindControl("BOX_NE_CAP"),textbox).text
ne_citta = cTYPE( e.Item.FindControl("BOX_NE_CITTA"),textbox).text
ne_tel = cTYPE( e.Item.FindControl("BOX_NE_TEL"),textbox).text
ne_fax = cTYPE( e.Item.FindControl("BOX_NE_FAX"),textbox).text
ne_email = cTYPE( e.Item.FindControl("BOX_NE_EMAIL"),textbox).text
ne_desc = cTYPE( e.Item.FindControl("BOX_NE_DESC"),textbox).text
ne_foto1 = cTYPE( e.Item.FindControl("BOX_NE_FOTO1"),textbox).text
ne_foto2 = cTYPE( e.Item.FindControl("BOX_NE_FOTO2"),textbox).text
if (cTYPE( e.Item.FindControl("BOX_NE_ONLINE"),textbox).text = "True") then ne_online = 1 else ne_online = 0
if (cTYPE( e.Item.FindControl("BOX_NE_NEW"),textbox).text = "True") then ne_new = 1 else ne_new = 0
if (cTYPE( e.Item.FindControl("BOX_NE_SCHEDA"),textbox).text = "True") then ne_scheda = 1 else ne_scheda = 0
if (cTYPE( e.Item.FindControl("BOX_NE_BANNER"),textbox).text = "True") then ne_banner = 1 else ne_banner = 0
ne_img_banner = cTYPE( e.Item.FindControl("BOX_NE_IMG_BANNER"),textbox).t ext
ne_txt_banner = cTYPE( e.Item.FindControl("BOX_NE_TXT_BANNER"),textbox).t ext
if (cTYPE( e.Item.FindControl("BOX_NE_LOGO"),textbox).text = "True") then ne_logo = 1 else ne_logo = 0
ne_img_logo = cTYPE( e.Item.FindControl("BOX_NE_IMG_LOGO"),textbox).tex t
ne_sito = cTYPE( e.Item.FindControl("BOX_NE_SITO"),textbox).text
StrConn = ConfigurationSettings.AppSettings("stringaconnessi one")
Dim objdatabase as new Admin.Database(strconn)
objdatabase.AggiornaDatiNegozio(ID_Negozio,ne_nome ,ne_id_tipologia,ne_icona,ne_coordx,ne_coordy,ne_i ndirizzo,ne_cap,ne_citta,ne_tel,ne_fax,ne_email,ne _desc,ne_foto1,ne_foto2,ne_online,ne_new,ne_scheda ,ne_banner,ne_img_banner,ne_txt_banner,ne_logo,ne_ img_logo,ne_sito)
Datalist1.Databind()
Datalist1.EditItemIndex = -1
End Sub
Io che cosa ho fatto: ho controllato che effttivamente il valore delle variabili sia quello che vedo nella pagina quindi variabili non nulle, e fin qui ok, poi ho iniziato a spostare il codice dalla classe alla pagina pensando che si perdessero per qualche motivo i valori passati alla classe stessa.
Alla fine mi sembra di aver capito che l'update non posso farlo con una ASPX ---> Classe ---> Stored Procedure.
PERCHE'?????![]()
![]()
![]()
![]()
![]()
Sembra anche leggendo qualche messaggio in questo forum che se si passano i valori ad una stored procedure tramite un datalist questi ultimi si perdono !!!! Ma come si perdono ? E dove vanno ?
Visto che aspx utilizza XML per scambiare i dati dai DB alle pagine non è possibile per fare quest'update che non funzia utilizzare qualcosa per leggere un file XML (Sempre sapendo l'applicazione dove va a scrivere questi valori).
Vi prego se sapete qualsiasi cosa di scrivermelo che ho finito un sito e mi manca per quanto riguarda l'amminitrazione di poter eseguire l'aggiornamento dei dati inseriti nel database.
Non vorrei mettere stringadiconnessione,query,nomedeicampi nella pagina aspx, preferisco molto di piu' quest'approccio stile Linguaggio ad oggetti ma se non è possibile utilizzarlo per queste cazzate come quella che ho fatto io, bè allora........
A voi le risposte
Grazie a tutti
Flat![]()