Un aspetto abbastanza scomodo della CheckBoxList ASP.NET è la mancanza di un metodo o una proprietà che restituisca la lista degli item correntemente selezionati. Non è difficile scrivere un metodo statico in una classe di utilità che faccia esattamente questo lavoro. Tuttavia preferiamo utilizzare un extension method per avere "a portata di mano" il nostro codice e per un utilizzo più "naturale" di questa funzionalità.

Per maggiori dettagli sugli extension methods potete vedere qua e per un altro esempio di utilizzo qui.
Il codice è veramente molto semplice, come potete vedere da voi qua sotto:
public static class extension
{
    public static IEnumerable<string> GetSelectedValues(this CheckBoxList ckl)
    {
        if (ckl == null)
            throw new NullReferenceException("ckl is null");

        foreach (ListItem item in ckl.Items)
        {
            if (item.Selected)
                yield return item.Value;
        }
    }
}

 

Ovviamente non c'è molta scelta nella ricerca dei valori selezionati, una foreach su tutti gli elementi e un check sulla proprietà selected. Come tipo di ritorno del metodo un IEnumerable<string> che ci permette si usare, in caso di necessità, i metodi Linq.
Col passare del tempo stiamo ampliando la nostra classe di estensioni di controlli web che abbiamo chiamato con poca fantasia "extension". Più avanti costruiremo la classe completa con tutti i metodi, da noi proposti, utili a velocizzare e facilitare lo sviluppo web.
comments powered by Disqus