Utilizzare una checkbox come colonna di un DataGrid

di Daniele Bochicchio, in ASP.NET, DataGrid, System.Data,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

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