#569 - Utilizzare una checkbox come colonna di un DataGrid

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.


Approfondimenti

Commenti

Esprimi il tuo giudizio su questo script:

Per procedere devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.




IN EVIDENZA
MISC