AjaxControlToolkit, CalendarExtender e strana eccezione …

giugno 22, 2010 1 commento

Ajax Control Toolkit consiste in un pacchetto di controlli per ASP.NET+AJAX molto, ma molto, ma molto utile.

Tra i controlli che spesso utilizzo vi è il Calendar Extender, in grado di visualizzare un calendar Ajax per la selezione di una data, agganciandolo ad esempio ad un evento “onclick” di una Texbox o di un Linkbutton.

Utilizzando la suddetta libreria ( AjaxControlToolkit.dll versione 3.5.40412.2) è capitato proprio oggi questo tipo di errore:

 

Errore server nell’applicazione ‘/’.

Impossibile modificare l’insieme Controls perché il controllo contiene blocchi di codice (ossia <% … %>).

Descrizione: Eccezione non gestita durante l’esecuzione della richiesta Web corrente. Per ulteriori informazioni sull’errore e sul suo punto di origine nel codice, vedere l’analisi dello stack.

Dettagli eccezione: System.Web.HttpException: Impossibile modificare l’insieme Controls perché il controllo contiene blocchi di codice (ossia <% … %>).

Errore nel codice sorgente:

Durante l'esecuzione della richiesta Web corrente è stata generata un'eccezione non gestita. Per informazioni sull'origine e la posizione dell'eccezione, vedere l'analisi dello stack dell'eccezione riportata di seguito.

Analisi dello stack:

[HttpException (0x80004005): Impossibile modificare l'insieme Controls perché il controllo contiene blocchi di codice (ossia <% ... %>).]
   System.Web.UI.ControlCollection.Add(Control child) +8678391
   AjaxControlToolkit.ScriptObjectBuilder.RegisterCssReferences(Control control) +687
   AjaxControlToolkit.ExtenderControlBase.OnLoad(EventArgs e) +62
   System.Web.UI.Control.LoadRecursive() +50
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627


Informazioni di versione: Versione di Microsoft .NET Framework:2.0.50727.4200; Versione di ASP.NET:2.0.50727.4205

Strano. Un errore che apparentemente non ha nulla a che vedere con il CalendarExtender, ma che compare proprio quando viene agganciato il CalendarExtender ad una TextBox, e scompare quando l’Extender viene rimosso.

Mamma Google dice che come al solito, non sono il solo:

http://forums.asp.net/p/1172295/1965060.aspx

I found that moving the javascript with the embedded <% %> tags from the head to the form tag fixes this error

In effetti la pagina ASP.NET su cui sto lavorando utilizza tags embedded <% %> al posto di ClientID statici.

Proviamo un po’ … Eureka!

Spostando la parte di codice dalla <head> alla <form> tag, l’errore scompare, ed il calendar funziona perfettamente.

Più avanti parlerò più approfonditamente di quali controlli del pacchetto Ajax Control Toolkit sono solito utilizzare.

Div con altezza molto piccola su IE6

giugno 21, 2010 Lascia un commento

Altro piccolo problema, sempre con il solito “maledetto” IE6 di casa Microsoft.

Lavorando ad un sito basato su box-model e CSS, quindi senza layout tabellare ma unicamente realizzato con DIVs, capita spesso di dover inserire piccole spaziature o separatori.

Un DIV con height molto piccola, magari di pochi pixel, viene correttamente renderizzata su IE7-IE8-Firefox ma, manco a dirlo, ecco che si presentano i primi problemi su IE6 …

IE6 sembra non considerare minimamente la proprietà “height” se impostata su piccole dimensioni, ad esempio 5px, 10px. Sembra che invece oltre i 20px circa, questa venga renderizzata correttamente.

Googlando un po’, ecco che scopro di non essere il solo:

http://www.velocityreviews.com/forums/t161151-p2-div-height-ie6-workaround.html

http://archivist.incutio.com/viewlist/css-discuss/71562

The extra space is probably caused by line-height, along with IE’s
broken overflow behavior which automatically expands an element to fit
the content, regardless of any specified dimensions.

Set overflow:hidden

Provo … funziona!

Sembra proprio che IE6 tenda ad andare in Overflow se la dimensione che tentiamo di settare è più piccola della dimensione del font (o forse del line-height), andando quindi ad “allargare” il DIV stesso in altezza.

Settando “overflow:hidden”, si forza il browser a renderizzare nascondendo il riempimento in eccesso, ottenendo il risultato voluto.

Probabilmente anche settando un font più piccolo, magari di 5px così come la height, si otterrebbe lo stesso risultato, ma preferisco utilizzare la soluzione basata su overflow:hidden, sicuramente più pulita.

Altro giro, altro regalo ….

Grazie Bill🙂

GIF semi-trasparenti ed IE6

giugno 21, 2010 Lascia un commento

Trasparenza ed IE6 non vanno molto d’accordo.

Esistono particolari hacks che permettono di visualizzare correttamente PNG trasparenti su IE6, come l’ormai noto IE PNG FIX, che permette al proprio sito di visualizzare PNG trasparenti anche su IE5+, con poche righe di CSS ed un file denominato iepngfix.htc ( vedi http://www.twinhelix.com/css/iepngfix/ ), senza dover apportare modifiche al proprio codice HTML.

A me francamente questi hack piacciono molto poco, a volte ho avuto problemi di performances su pagine contenenti parecchi PNG, così ho deciso di tornare ad utilizzare il caro vecchio formato GIF per tutte quelle icone che richiedono zone di trasparenza.

In questi giorni ho avuto però la necessità di realizzare una GIF “semi-trasparente”, da utilizzare come background di un div per simulare una “zona di selezione” all’interno di un grafico… cosa scopro? Che le GIF gesticono solamente la trasparenza on-off “in modo binario”, e non gestiscono un canale alpha … argh!

Tratto da http://www.icongalore.com/xp-icon-articles/alpha-channel-explained.htm :

Tipi di file di supporto che l’alfa

Di seguito sono riportati il tipo di file che supporto del canale alfa:

  • TIFF TIFF
  • TGA TGA
  • PNG PNG
  • PSD (Photoshop)
  • GIF (alfa speciale)

TIFF, TGA, PNG, PSD, GIF tutti alpha sostegno, ma in realtà solo PNG e GIF sono utilizzati per applicazioni e il web. Gif, tuttavia, utilizza un particolare tipo di alfa. Al posto del canale alpha in una immagine GIF contenenti gradi di trasparenza, ha solo un interruttore on / off trasparenza. Ciò significa che i pixel all’interno di un’immagine GIF può essere completamente opaco o completamente trasparente. Non c’è via di mezzo. PSD è il formato di Photoshop, e può essere utilizzato nella maggior parte delle applicazioni Adobe.

E’ possibile però ottenere un risultato cross-browser tutto sommato accettabile realizzando una immagine GIF contenente una specie di “griglia” che vede alternati pixel colorati a pixel trasparenti.

Qui trovate alcuni background già pronti: http://www.wannabegirl.org/translucent/

Oppure la potete realizzare con gimp, con pochi click.

Aprite Gimp, create una nuova immagine (File -> New) di soli 4 pixel (2×2) stando attenti a selezionare “Trasparenza” come colore di riempimento dello sfondo.

Utilizzando lo strumento di zooming, ingrandite più che potete l’immagine, così da avere evidenti i 4 pixel che compongono l’immagine.

Selezionate poi lo strumento “Matita”, e selezionate la punta con la dimensione più piccola possibile (da 1 pixel).

Andate poi a colorare in maniera alternata i 2 pixel in diagonale, così come in figura.

Salvate l’immagine in formato GIF ( File -> Salva come … -> Nome: selection.gif ).

Utilizzatela ora come background di un div, attivando il background repeat, ad esempio così:

<html>
 <body>
  <div style=”background-image: url(‘cartina_italia.gif’); height: 350px; width: 300px;”>
  </div>
  <div style=”background-image: url(‘selection.gif’); background-repeat: repeat; border: 1px solid #3399FF; height: 100px; left: 50px; position:absolute; top:50px; width: 100px;”>
  </div>
 </body>
</html>

Ed il risultato sarà più che soddifacente! Testato su IE6, IE7, IE8 e Firefox.

Qui il file selection.gif generato nell’esempio sopra, se riuscite a vederlo😉

Stay tuned.

La protagonista …

giugno 16, 2010 Lascia un commento

Tanto per cominciare, un post molto serio, e soprattutto in tema con argomenti IT ed Hi-Tech.

Non sono un grande appassionato di calcio, anzi oserei dire che proprio non ne capisco nulla.

Ma non potevo non notarla.

Per la gioia dei vostri amici e sorpattutto dei vostri colleghi … Eccola!

E’ lei, la protagonista del Mondiale, ora a portata di click. O meglio, di “tap”. E anche di “shake”.

Vuvuzela 2010 Vuvuzela 2010

La Vuvuzela, da Wikipedia 

…trombetta ad aria della lunghezza approssimativa di un metro, comunemente usata in Sudafrica dai tifosi che assistono alle partite di calcio…

 Aggiungerei anche

…odiata dal 99,99% delle persone che hanno per sbaglio acceso e sintonizzato il proprio televisore su una partita di calcio durante il Mondiale 2010…

Buon divertimento!

Hello world!

giugno 16, 2010 Lascia un commento

Hello world!! – Benvenuti!!

Ho deciso di non cambiare il nome del primo post, “Hello world”, tanto per rimanere in tema IT!

Questo blog tratterà argomenti tecnici e problematiche che incontro quotidianamente, durante le travagliate ore che trascorro rinchiuso in queste 4 mura a “ricercare&sviluppare”.

Buona lettura a tutti quindi, e benvenuti su ITalez – Storie di un ricercatore IT!

Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.