Gestendo alcuni controlli in ASP.NET mi è sorta la necessità di spostare il focus su determinati controlli in base alle scelte dell’utente nella pagina. Un semplice esempio puo essere quello di spostare il focus su un controllo in base alla scelta di un determinato radio button. Ho creato una semplice pagina in cui è presente una RadioList con due Items e due textbox con due label annessi.

La Radiolist ha due scelte: Cane/Gatto e Nessuno. L’utente può indicare se ha un animale o se non lo ha. Se viene scelto Cane/Gatto il focus si sposta sulla textbox dove si indica la razza dell’animale, altrimenti se si va su Nessuno di passa ad un altro ipotetico controllo (la nostra seconda textbox). Come mostrato nella figura sotto.

focus.jpg

Per rendere più simpatico il tutto ho pensato di cambiare il colore, nel caso della seconda scelta, il colore della textbox per la razza dell’animale in grigio e poi di disabilitare la stessa textbox. Per fare ciò bastano queste poche righe di codice:

 

protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e)
{
if (RadioButtonList1.SelectedValue == "Cane/Gatto")
{
TextBox2.Focus();
TextBox1.BackColor = System.Drawing.Color.Gray;
TextBox1.Enabled = false;
}
else
TextBox1.BackColor = System.Drawing.Color.White;
TextBox1.Enabled = true;
TextBox1.Focus();
}

Nel corpo dell’ else riporto il colore della prima texbox a white e la riabilito. ciò non è necessario se il visitatore sceglie per la prima volta Cane/Gatto nella radiolist1, ma nel caso in cui dopo aver scelto nessuno cambi idea e reimposti la sua scelta a Cane/Gatto.
Carino vero?

Se i miei post ti sono stati di aiuto o ti sono sembrati intressanti puoi offrirmi un caffè :)