DropDownList con elemento neutro

di Marco Leoncini, in asp.net,

 è capitato spesso che nel forum vensisse posta la domanda di come inserire un elemento neutro in auna DropDpwnList, la classica voce "seleziona un valore", il codice per farlo è semplicissimo, giusto una riga:

CategoryDropdownlist.Items.Insert(0,new ListItem("NessunFiltro","-1"));

ma con un ulteriore sforzo si può realizzare un WebControl che eredita da System.Web.UI.WebControls.DropDownList e aggiungere due propietà , soluzione sicuramente più riusabili che del semplice copia/incolla ecco il codice:

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, in questo evento andiamo ad aggiungere il nostro item "neutro" prelevando i valori dal VievState ed il gioco è fatto, compiliamo la classe in una dll e potremo così usarla in ogni nostro progetto

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese