E' capitato spesso che nel forum venisse posta la domanda su come inserire un elemento neutro in ad DropDpwnList, la classica voce "seleziona un valore", il codice per farlo è semplicissimo, giusto una riga:
dropdownlist.Items.Insert(0,new ListItem("NessunFiltro","-1"));
Con un ulteriore sforzo si può realizzare un WebControl che eredita da System.Web.UI.WebControls.DropDownList e aggiungere due propietà, soluzione sicuramente più riusabile del semplice copia/incolla:
using System; using System.Web; using System.Text; using System.Web.UI; using System.Web.Caching; using System.Web.UI.WebControls; using System.ComponentModel; [assembly: TagPrefixAttribute("DropList","Drop")] namespace DropList { /// <summary> /// Descrizione di riepilogo per Drop. /// </summary> /// [ToolboxData("<{0}:Drop runat=server></{0}:Drop>")] public class Drop: System.Web.UI.WebControls.DropDownList { public Drop() { this.PreRender += new EventHandler(Drop_PreRender); } protected void Drop_PreRender (object sender, EventArgs e) { if(NeutralText.Length > 0 & NeutralValue.Length > 0) { this.Items.Insert(0,new ListItem(NeutralText,NeutralValue)); } } [Browsable(true)] public string NeutralText { get { object obj1 = this.ViewState["NeutralText"]; if (obj1 != null) return ((string) obj1); return string.Empty; } set {ViewState["NeutralText"] = value;} } [Browsable(true)] public string NeutralValue { get { object obj1 = this.ViewState["NeutralValue"]; if (obj1 != null) return ((string) obj1); return string.Empty; } set {ViewState["NeutralValue"] = value;} } } }
Nel codice creiamo una nuova classe che eredita da DropDownList, aggiungiamo due propietà che non fanno altro che prendere due valori string dal VievState, rispettivamente il testo da visualizzare ed il valore.
Nel costruttuore ci registriamo per l'evento Prerender, dove andiamo ad aggiungere il nostro item neutro prelevando i valori dal VievState.
Il gioco è fatto, compiliamo la classe in una dll e potremo così usarla in ogni nostro progetto.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
I più letti di oggi
- Visualizzare contenuti Fullscreen con HTML5
- Leggere e scrivere su cookie tramite Blazor
- Richiamare programmaticamente le operazioni di aggiornamento, eliminazione e inserimento di FormView, DetailsView e GridView
- Realizzare siti sicuri con ASP.NET Web Pages
- Il web control DropDownList di ASP.NET
- Un helper method per replicare un template per ogni proprietà con ASP.NET MVC
- Operazioni di selezione su una DataTable
- Dependency injection in ASP.NET MVC 5 con Ninject
- Aumentare la scalabilità di ASP.NET Core Web API con caching client side
- Accedere con ASP.NET ad un documento XML creato dall'oggetto recordset di ADO e ASP