#955 - Realizzare un metodo FindControl generico utilizzando gli Extension Method
Tra le novità introdotte con C# 3.0, gli Extension Method rappresentano sicuramente una tra le più interessanti.
Senza dilungarsi troppo, un Extesion Method è uno speciale metodo statico che è possibile utilizzare come un qualsiasi metodo d'istanza del tipo che va ad "estendere" .
Nello script realizzeremo un semplice Extesione Method per creare un metodo FindControl generico, in modo tale da evitare di dover più volte riscrivere il codice necessario al cast.
namespace AspItalia.Common.ExtensionMethod.WebControlExtension
{
public static class ControlExtension
{
public static bool TryFindControl<T>(this Control control, string id, out T returnWebControl) where T : Control
{
T _control = control.FindControl(id) as T;
if (_control == null)
{
returnWebControl = null;
return false;
}
else
{
returnWebControl = _control;
_control = null;
return true;
}
}
}
}
Da notare l'uso particolare del modificatore this prima dell'argomento control di tipo Control, perchè questo sarà il tipo che verrà "esteso" con il nuovo metodo.
Per utilizzare l'Extension Method sarà sufficiente importare il namespace in cui si trova, per poi utilizzarlo in questo modo:
protected void MyGridView_RowCreated (object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
TextBox _textBox ;
if (e.Row.TryFindControl<TextBox>("SurnameTextBox", out _textBox)
_textBox.BackColor = System.Drawing.Color.Red;
}
}
L'esempio mostra un ipotetico event handler del metodo RowCreated di una GridView, dove il TryFindControl restituisce true se riesce a recuperare il controllo desiderato e valorizza di conseguenza la variabile _textBox con il controllo specificato.
Approfondimenti
- I nuovi controlli di ASP.NET 3.5: LinqDataSource, ListView e DataPager
- #935 - Sfruttare l'evento LoadComplete della pagina
- #953 - Utilizzare le nuove funzionalità di URL Routing di ASP.NET 3.5 SP 1
- Velocity: ADO.NET Distributed Cache
- #959 - Le novità di Cache in ASP.NET 3.5 SP 1
- Routing e dynamic data control di ASP.NET 3.5 SP1
- un visualizzatore di eccezioni parte 1: helper
- .NET Framework 3.5 e Visual Studio 2008
- A volte ritornano... GridView vs Repeater vs ListView vs Custom
- #936 - Aggiungere una riga con il totale calcolato al GridView
- Community Champion Basta!Italia 2009
- #937 - Personalizzare il contenuto del profilo con l'evento Personalize
Commenti
Esprimi il tuo giudizio su questo script:
Per procedere devi essere autenticato.
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.







Stampa
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!