La conversione del WebControl DropDownListFX non ha richiesto molto tempo, rimosse le chiamate a metodi "segnati" come obsoleti, cambiato il modo di gestire javascript, tutto funzionava (avrebbe funzionato anche senza cambiare una virgola).
ma fermarsi alla superfice non mi piace, quando ci riesco, mi piace scendere più nel dettaglio, e mettere in discussione le scelte fattea suo tempo.
prendiamo la DropDownList, il controllo di cui parlavamo sopra ne "mima" il comportamente, estendendone le caratteristiche estetiche.
albero "genealogico" ver 1.x
DropDownList
>ListControl
+>WebControl
-+>Control
DropDownListFx
>ListControl
+>WebControl
-+>Control
albero "genealogico" ver 2.0
DropDownList
>ListControl
+>DataBoundControl
-+>BaseDataBoundControl
--+>WebControl
---+>Control
la nuova DropDownList si trova con una bella famiglia allargata, un problema, con le feste che si avvicinano.
i cambiamenti, non si limitano appa "parentela" , ma interessano la distribuzione delle responsailità tra i WebControl.
prendiamo ad esempio il metodo AddAttributesToRender dettal DropDownList
ver 1.x
protected override void AddAttributesToRender(HtmlTextWriter writer) { if (this.Page != null) { this.Page.VerifyRenderingInServerForm(this); } writer.AddAttribute(HtmlTextWriterAttribute.Name, this.UniqueID); if (this.AutoPostBack && (this.Page != null)) { string text1 = this.Page.GetPostBackClientEvent(this, ""); if (base.HasAttributes) { string text2 = base.Attributes["onchange"]; if (text2 != null) { text1 = text2 + text1; base.Attributes.Remove("onchange"); } } writer.AddAttribute(HtmlTextWriterAttribute.Onchange, text1); writer.AddAttribute("language", "javascript"); } base.AddAttributesToRender(writer); }
ver 2.0
protected override void AddAttributesToRender(HtmlTextWriter writer) { string text1 = this.UniqueID; if (text1 != null) { writer.AddAttribute(HtmlTextWriterAttribute.Name, text1); } base.AddAttributesToRender(writer); }
come si vede il nuovo metodo è molto più snello, tutta la logica si è spostata nella classe ListControl (cosa diametralemente opposta a quanto accadeva nella 1.x)
protected override void AddAttributesToRender(HtmlTextWriter writer) { ...<omisissis>... if ((this.AutoPostBack && (this.Page != null)) && this.Page.ClientSupportsJavaScript) { string text1 = null; if (base.HasAttributes) { ...<omisissis>... } PostBackOptions options1 = new PostBackOptions(this, string.Empty); if (this.CausesValidation) { options1.PerformValidation = true; options1.ValidationGroup = this.ValidationGroup; } if (this.Page.Form != null) { options1.AutoPostBack = true; } text1 = Util.MergeScript(text1, this.Page.ClientScript.GetPostBackEventReference(options1)); writer.AddAttribute(HtmlTextWriterAttribute.Onchange, text1); if (base.EnableLegacyRendering) { writer.AddAttribute("language", "javascript", false); } } ...<omisissis>... base.AddAttributesToRender(writer); }
visto questo gran numero di novità, limitarsi alla semplice ricompilazione mi sembrava poco, così ho deciso di riprogettare DropDownFx, , per prima cosa ho "ripristanato" AddAtributeToRender, nella ormai vecchia implementazione eseguivo l'override, e lasciavo il metodo vuoto, adesso mi servirò dei servigi di ListControl.
DataBoundControl metiterebbe un discorso apparte...
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- Modificare il controllo TreeView, il 2 dicembre 2008 alle 19:27
- Perfezioniamo il ProfileDataSorce, il 13 ottobre 2008 alle 11:14
- Un DataSource per il Profile, il 10 ottobre 2008 alle 15:06
- TrueSpace 7 gratuito, il 24 luglio 2008 alle 10:59
- adesso dico la mia sull'Iphone, il 22 luglio 2008 alle 10:33
- Come tutto ebbe inizio, il 21 luglio 2008 alle 09:22