Passare il contenuto di un DataItem ad una funzione durante il databinding

di , in ASP.NET, ADO.NET, System.Data,

Il databinding ed i controls che lo supportano, come DataGrid, DataList e Repeater, sono davvero utili, perchè permettono di associare i dati estratti da una fonte qualsiasi in maniera ciclica, con una pulizia del codice elevata ed una separazione reale tra codice e sua rappresentazione.
Quello che molti non sanno è che si può passare il valore di una delle colonne del container ad una funzione esterna, per formattazioni o calcoli.
In questo esempio la funzione è molto banale: restituisce un'immagine con una GIF particolare se il valore del campo è true, un'altra se il valore del campo è false.
Ovviamente, ci sono utilizzi più avanzati (e forse utili) di quello presentato, ma il concetto non si distacca di una virgola.

<%@ Import Namespace="System.Data"%>
<%@ Import Namespace="System.Data.SQLClient"%>
<SCRIPT LANGUAGE="VB" RUNAT="SERVER"> 

Sub Page_Load(sender As Object, e As EventArgs)
  ' caricamento dei dati dal database
End Sub

Function Immagine(valore as Boolean) as String
  If valore = true then
    Return "<img src=""approvato.gif"">"
  Else
    Return "<img src=""bloccato.gif"">"
  End If
End Function
</SCRIPT>
 <asp:repeater id="queryres" runat="server">
 <itemTemplate>
  <%#Container.DataItem("Nome")%>
  <%#Immagine(Container.DataItem("Approvato"))%>
 </itemTemplate>
 </asp:repeater>

Per approfondimenti sul databinding:

#302 - Data binding con ADO.NET
https://www.aspitalia.com/liste/usag/script.aspx?ID=302

#382 - Il controllo DataList
https://www.aspitalia.com/liste/usag/script.aspx?ID=382

#445 - La paginazione manuale con il DataSet di ADO.NET ed un Repeater
https://www.aspitalia.com/liste/usag/script.aspx?ID=445

La categoria System.Data:
https://www.aspitalia.com/ricerca/super.aspx?usag=1&azione=categoria&key=System.Data

Commenti

Visualizza/aggiungi commenti

Passare il contenuto di un DataItem ad una funzione durante il databinding (#448) 810 72
| 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