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.