Introduzione
Il controllo checkboxlist, è un controllo simile al controllo Listbox, solo con la differenza che presenta per ogni elemento, un casella di selezione ossia una ckeckbox.
Il controllo può tornare utile, nel caso si ha la necessità di visualizzare un elenco di voci con selezione multipla, evitando in questo modo un inserimento massiccio dei controlli Checkbox.
Stesura del codice – caricamento dei dati
Supponiamo di caricare il controllo checkbolist con i dati riguardante alcune città, nell’evento load della pagina, si crea un oggetto di tipo datatable, valorizzando con dei dati a piacere
DataTable dttDati = new DataTable();
DataColumn dtcCitta = new DataColumn("Citta");
DataColumn dtcCodice = new DataColumn("Codice");
dttDati.Columns.Add(dtcCitta);
dttDati.Columns.Add(dtcCodice);
DataRow dtrRiga ;
dtrRiga = dttDati.NewRow();
dtrRiga["Citta"] = "Roma";
dtrRiga["Codice"] = "RM";
dttDati.Rows.Add(dtrRiga);
dtrRiga = dttDati.NewRow();
dtrRiga["Citta"] = "Milano";
dtrRiga["Codice"] = "MI";
dttDati.Rows.Add(dtrRiga);
dtrRiga = dttDati.NewRow();
dtrRiga["Citta"] = "Bologna";
dtrRiga["Codice"] = "BO";
dttDati.Rows.Add(dtrRiga);
dtrRiga = dttDati.NewRow();
dtrRiga["Citta"] = "Palmero";
dtrRiga["Codice"] = "PA";
dttDati.Rows.Add(dtrRiga);
dtrRiga = dttDati.NewRow();
dtrRiga["Citta"]= "Catania";
dtrRiga["Codice"] = "CT";
dttDati.Rows.Add(dtrRiga);
dtrRiga = dttDati.NewRow();
dtrRiga["Citta"] = "Reggio Calabria";
dtrRiga["Codice"] = "RC";
dttDati.Rows.Add(dtrRiga);
CheckBoxList1.DataSource = dttDati;
CheckBoxList1.DataTextField = "Citta";
CheckBoxList1.DataValueField = "Codice";
CheckBoxList1.DataBind();
Visualizzare gli elementi su più colonne
Tramite la proprietà RepeatColums possiamo impostare la visualizzazione degli elementi in più colonne
Si riporta il frammento del codice html relative alla proprietà RepeatColumns
<asp:CheckBoxList ID="CheckBoxList1" RepeatColumns="3" runat="server">
</asp:CheckBoxList>
Utilizzo di Linq
Con linq, possiamo in maniera molto semplice e rapida selezionare alcuni elementi del controllo checkbolist.
Qui di seguito si riporta il frammento di codice
string[] parametro = { "RM", "CT", "RC" };
(from i in CheckBoxList1.Items.Cast<ListItem>() where parametro.Contains(i.Value) select i).ToList().ForEach(i => i.Selected = true);
Conclusioni
L’utilizzo del controllo checkboxlist, può tornare utile in diversi contesti, tramite linq, inoltre si possono fare tante interessanti operazioni.