Beren.it

All that you can leave behind

Dynamic Data Entry - Un datepicker per le date

Personalizzare il controllo di editing delle date con i Dynamic Data Entity

Sappiamo tutti che uno dei formati di dato più pericolosi in assoluto è la data. Fondamentalmente perchè ognuno la scrive un pò come gli pare e piace con il problema che poi quando si va a scriverla sul DB ci possono essere spiacevoli sorprese. Nell'ambito dei Dynamic Data Entry di cui da un pò di post mi occupo per la notevole versatilità che hanno l'idea che più di tutte si è fatta largo nel mio ideale di applicazione è quella di consentirne l'inserimento e la modifica attraverso un datepicker. Dato che molti però, come il sottoscritto ;), non masticano molto JQuery magari ripiegare su una soluzione più semplice può essere di utilità ed in questo ci viene in aiuto l'Ajax Control Toolkit che potete scaricare gratuitamente qui.
Questo fantastico set di controlli oob Ajax contiene un buon Calenda Extender che fa al caso nostro. Scaricata infatti la dll ed inclusa come referenza del progetto potremo infatti usufruire di tale funzionalità.

Per implementare tale modifica dovremo dunque aprire la lista dei controlli ed, una volta individuato il controllo generico di Edit delle date aprirlo nell'editor.

Nella toolbox a sinistra selezionate il Calendar Extender e trascinatelo nel controllo a destra. Se nella toolbox a sinistra non doveste trovare il controllo significa che dovete semplicemente aggiungere la dll cliccando con in destro sulla toolbox quindi premendo "Choose items" ed infine nella finestra che si aprirà browsandola.

Una volta che avete trascinato l'extender all'interno del controllo, il gioco è praticamente fatto. Basterà infatti modificare le sue proprietà per ottenere l'effetto voluto:

  • TargetControlID: è l'ID del controllo che conterrà poi effettivamente la data che nel nostro caso è la textbox preesistente. In pratica con questa proprietà l'extender sa su quale controllo deve visualizzare il datepicker. Questa proprietà deve essere valorizzata altrimenti il datepicker non funzionerà.
  • Format: questa indica semplicemente il formato in cui verrà tradotta la data scelta nel date picker ed inserita nel controllo. Nel nostro caso nel classico formato che si usa in Italia.

Una volta concluso questo il gioco è fatto senza JQuery e con un effort ridicolo.

 

ASP.NET Ajax client-side framework failed to load

Errore ASP.NET Ajax client-side framework failed to load

Qualche giorno fa mi ero trovato a dover riconfigurare su una macchina nuova un'applicazione ASP.NET 4.0 che avevo inizialmente sviluppato su di un'altra. In pratica sulla vecchia macchina tutto funzionava a dovere, invece sulla nuova mi ritrovavo ad avere sempre in caricamento l'errore "ASP.NET Ajax client-side framework failed to load". In effetti tutto ciò che era Ajax nell'applicazione non funzionava più. Ho fatto così una serie di ricerche sul web ed ho trovato gli errori più assortiti e fantasiosi: da un problema al web.config, ad inserire codice custom nel routing dell'applicazione (è un app MVC) e infine modificare mille settaggi diversi in IIS. Tutto senza alcun esito.

Finalmente questa mattina mi imbatto in questo post che mi ha risolto tutti i problemi. In effetti come suggerisce il tipo, ho guardato sotto il site di IIS in cui gira l'applicazione e nella sezione Handler Mapping ho verificato che c'erano pochissime voci e nessuna su ASP.NET 4.0, di conseguenza ho fatto come consigliava lui cioè ho fatto un rerun del comando aspnet_regiis nella directory del Framework 4.0 (perchè a me lo dava con le applicazioni 4.0)

Una volta eseguita questa operazione magicamente negli Handler Mapping mi sono ritrovato tutte le voci mancanti (specie quelle su ASP.NET 4.0) e soprattutto l'errore ed i problemi ad esso correlati erano svaniti.