Di default il DataGrid di ASP.NET è sprovvisto di un Template in grado di mostrare lo stato di una checkbox.
La cosa è però facilmente aggirabile, costruendo un custom control che lo faccia, oppure sfruttando questo semplice codice, che aggiunge un control impostando la proprietà Checked sul valore estratto dalla fonte dati.
<asp:DataGrid id="db1" runat="server"> <Columns> <asp:TemplateColumn HeaderText="Disponibile"> <ItemTemplate> <asp:Checkbox runat="server" enabled="false" Checked='<%# DataBinder.Eval(Container.DataItem, "Disponibile") %>' /> </ItemTemplate> <EditItemTemplate> <asp:Checkbox runat="server" id="Disponibile" Checked='<%# DataBinder.Eval(Container.DataItem, "Disponibile") %>' /> </EditItemTemplate> </asp:TemplateColumn> </Columns> </asp:DataGrid> <SCRIPT RUNAT="SERVER" Language="C#"> void onUpdateDataGrid (Object src, DataGridCommandEventArgs e) { // e.Item è il riferimento al record corrente CheckBox cb = (CheckBox) e.Item.FindControl("Disponibile"); lblText.Text = "Il control è selezionato?" + cb.Checked.ToString(); } </SCRIPT>
Come si può notare per aggiungere un valore in fase di binding del control è necessario specificare l'istruzione di databind all'interno di apici singoli (') anzichè sfruttare le usuali virgolette (").
Per recuperare il valore sarà poi sufficiente, nella routine di update, nel nosto caso chiamata onUpdateDataGrid, recuperare il control per nome e lavorare poi sulle proprietà che lo stesso espone.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
I più letti di oggi
- Sfruttare le funzionalità degli Azure Cognitive Service on-edge con i container
- Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
- I tutorials, percorsi guidati per tutti
- Introduzione ai Cognitive Services di Microsoft Azure
- Gestire gli eventi dei servizi Azure mediante Event Grid