DropDowList tu mi tradisci

di Marco Leoncini, in asp.net,

non ci avevo mai fatto caso, ovvero avevo preso per oro colato quanto diceva la documentazione sulla proprierà SelectedValue della DropDownList, in fondo chi sono io per dubitarne.

ecco cosa dice:

La proprietà SelectedValue può anche essere utilizzata per selezionare un elemento nel controllo elenco impostandolo con il valore dell'elemento. Se nessun elemento del controllo elenco contiene il valore specificato, viene generata un'eccezione System.ArgumentOutOfRangeException.

prendete una semplice DropDownList:



il controllo è alimentato da un SqlDataSource che recupera da una tabella nome e cognome dei clienti.

quello che mi aspetterei eseguendo il codice sottostante è una bella eccezione

protected void Page_Load(object sender, EventArgs e)
{
DropDownList1.SelectedValue = "questo valore non esiste proprio";

}

ed infatti è così...ma non sempre, scriviamo adesso:

protected void Page_Load(object sender, EventArgs e)
{
DropDownList1.DataBound += new EventHandler(DropDownList1_DataBound);
}

l'evento DataBound è nuovo in asp.net 2.0 e viene generato quando il DataBind si è ormai concluso.

void DropDownList1_DataBound(object sender, EventArgs e)
{
DropDownList1.SelectedValue = "questo valore non esiste proprio";
}

nessuna eccezione, nessun item viene selezionato perche? se controllare con il reflector della proprietà SelectedValue vedrete che l'eccezione viene sollevata solo se non viene trovata nessuna corrispondeza tra i valori dell'item della DropDownList e la pagina è eseguita a seguito di un PostBack, infatti aggiungiamo un bottone che nell'event hadler dell'evento Click esegue questo codice:

void Button1_Click(object sender, EventArgs e)
{
DropDownList1.SelectedValue = "questo valore non esiste proprio";


Ecco ricomparire la nostra bramata eccezione, quindi sarebbe più giusto dire:

La proprietà SelectedValue può anche essere utilizzata per selezionare un elemento nel controllo elenco impostandolo con il valore dell'elemento. Se nessun elemento del controllo elenco contiene il valore specificato e la pagina viene eseguita a seguito di un PostBack viene generata un'eccezione System.ArgumentOutOfRangeException.

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