ciao, buona domenica!
gdalbell ha scritto:
come se non riuscisse a ripopolare la ddl nella detailsview una volta effettuato l'update...
già, infatti. Quella funzione OttieniValore non è granché, vedi se riesci a farle recuperare i valori corretti di id_nazione e id_provincia in ogni situazione.
In alternativa, questo problema puoi risolverlo mettendo una pezza: appena l'update è avvenuto, reindirizza l'utente.
Quindi, gestisci l'evento ItemUpdated del DetailsView e fai una ridirezione.
Protected Sub dettaglioView_ItemUpdated(sender As Object, e As DetailsViewUpdatedEventArgs)
Response.Redirect(Request.Url.PathAndQuery)
End Sub
gdalbell ha scritto:
Secondo te se uso il contentemplate con lo scriptmanager è buona cosa?
Sì e no. Il beneficio sarebbe limitato al fatto che la pagina si aggiornerà solo parzialmente, evitando così un postback completo.
Ma i dati del form vengono inviati tutti comunque, compreso il viewstate che *può* arrivare a raggiungere dimensioni importanti.
Per prendere una decisione bisogna capire come verrà usata la tua applicazione. Se si tratta di un pannello di gestione
intranet, allora forse non vale neanche la pena di usare ajax perché la connessione con il server avviene su cavi ethernet da almeno 100 Mb, e la latenza di rete sarà quasi nulla. Potresti lasciare tutto com'è, non bisogna modificare la propria applicazione in nome delle buone pratiche di sviluppo, ma solo quando la modifica produce anche un valore tangibile per l'utente.
Tuttavia, se i tuoi utenti si collegano da internet, specie se da un dispositivo mobile 3G, allora la loro esperienza d'uso potrebbe peggiorare.
In questo caso è molto importante ridurre al minimo i dati che viaggiano tra client e server e usare UpdatePanel + ScriptManager non darà comunque un risultato soddisfacente.
Proverei a fare una richiesta ajax ad un HttpHandler .ashx scritto da me. Nella richiesta gli passerei dei parametri tipo ?id_provincia=2 per farmi restituire tutti i comuni di quella provincia. Poi, via javascript, leggerei i comuni e li aggiungerei come opzioni alla dropdownlist.
Ora, Asp.Net Webforms ha un meccanismo
anti-tampering che al postback produrrà un errore, se avevi manipolato la dropdownlist col javascript e avevi selezionato un valore non compreso nell'elenco originale, generato lato server.
Allora forse proverei ad usare l'espressione Bind() su un HiddenField e lascerei che le dropdownlists fossero delle semplici <select> html.
In questo modo, col javascript puoi manipolare la <select> come vuoi, dato che non hanno runat="server" e perciò non sono soggette al meccanismo
anti-tampering.
Quando poi l'utente seleziona un comune diverso, risponderai all'evento javascript onchange per copiare il valore dentro il campo hidden.
Questo espediente non sarebbe necessario in MVC perché là i controlli server di Asp.Net non si usano.
Rinunciare all'enorme produttività che quei controlli ti danno, in un primo tempo potrebbe lasciarti spiazzato. Via via si impara ad apprezzare la maggiore vicinanza al codice html, e la migliore testabilità del progetto. Si ha un senso di pulizia ed efficienza.
Comunque, non è che MVC soppianti WebForms. Ci sono situazioni in cui ti chiedono di sviluppare in tempi estremamente rapidi e in questo caso i controlli WebForms ti offrono un incredibile aiuto.
ciao