Nello script seguente si può notare la potenza e la flessibilità dell'utilizzo dell'evento OnItemDataBound: associando a questo evento un metodo, esso viene richiamato per ogni item (riga di dettaglio) creato.
Lo script prevede l'estrazione dei dati da un database, richiamando la subroutine BindDataGrid() che associa i dati al DataGrid "Elenco".
Il DataGrid prevede anche la paginazione (non è il tema dell'esempio) ma la parte importante è contenuta nel metodo ItemDataBound(), che aggiunge degli attributi alle righe della tabella generata dal DataGrid.
Nel caso specifico servono a creare un effetto al passaggio del mouse sulle righe, ovvero viene modificato il colore di sfondo, in modo da selezionare la riga interessata. Una volta che il mouse si sposta il colore ritorna al valore precedente.
Un'altra cosa importante è la possibilità di intercettare i valori delle singole celle: nel caso specifico viene utilizzato un esempio molto banale ma sicuramente molto potente.
Viene modificato il valore della seconda colonna (il parametro è 1 perchè zero-based). Al contenuto della cella viene aggiunto staticamente un link. E' possibile fare lo stesso dinamicamente andando a pescare il dato in un database.
<SCRIPT RUNAT="SERVER" LANGUAGE="VB">
sub BindDataGrid()
Dim objDS As New DataSet()
dim conn as SQLconnection = new SQLconnection (stringa di connessione...)
strSQL = "SELECT..."
Dim objDataAdapter As New SQLDataAdapter(strSQL, conn)
objDataAdapter.Fill(objDS, "contatti")
Elenco.DataSource = objDS.Tables(0).DefaultView
Elenco.DataBind()
'totale pagine
lblPagine.InnerHTML = "numero dipagine: <b>" & Elenco.PageCount & "</b>" 'associato ad un tag DIV (runat=server)
conn.close()
end sub
Sub ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs)
'esegue solo per gli item
If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
'aggiunge per ogni riga gli attributi di tipo style
e.Item.Attributes.Add("onmouseover", "this.style.backgroundColor='Silver'")
'esegue nel caso di item alternativo (righe dispari)
if e.Item.ItemType = ListItemType.AlternatingItem
e.Item.Attributes.Add("onmouseout", "this.style.backgroundColor='#DDD'")
else
e.Item.Attributes.Add("onmouseout", "this.style.backgroundColor='#EEè")
end if
'modifica il contenuto di una cella di dettaglio creando un link
e.Item.Cells(1).Text = "<a href='quello che vuoi' class='stilè title='quello che vuoi'>" + e.Item.Cells(1).Text + "</a>"
end if
End Sub
Sub PageIndexChanged_onclick(objSender As Object, objArgs As DataGridPageChangedEventArgs)
' imposta il numero di pagina
Elenco.CurrentPageIndex = objArgs.NewPageIndex
'Pagina di riferimento
lblPagine.InnerHTML = "Pagina <b>" & objArgs.NewPageIndex+1 & "</b>"
' effettua di nuovo il binding dei dati
BindDataGrid()
End Sub
</SCRIPT>
<form runat="server">
<div id="lblPagine" class="stile" runat="server" />
<ASP:DataGrid id="Elenco" runat="server"
OnItemDataBound="ItemDataBound"
CellPadding="2"
ShowHeader="true"
BorderColor= "#000000"
BackColor = "#EEEEEE"
HeaderStyle-BackColor= "#777777"
HeaderStyle-CssClass= "intestazione"
ItemStyle-verticalalign="Top"
ItemStyle-CssClass = "piccolo"
AlternatingItemStyle-BackColor="#DDDDDD"
Border="1"
PagerStyle-Mode="NumericPages"
PagerStyle-HorizontalAlign="Right"
PagerStyle-position="TopAndBottom"
PagerStyle-CssClass="paginazione"
OnPageIndexChanged="PageIndexChanged_OnClick"
width="100%"
AutoGenerateColumns="true" >
</ASP:DataGrid>
</form>
- I nuovi controlli di ASP.NET 3.5: LinqDataSource, ListView e DataPager
- #945 - Verificare l'accesso ai file mediante l'UrlAuthorizationModule di ASP.NET
- Prima October Preview per ASP.NET 4.0
- Introduzione ad Entity Framework
- Cosa fare se la vostra applicazione ASP o ASP.NET è vittima di SQL injection
- #930 - Propagare un evento al controllo padre nei Custom Control
- #932 - Il controllo ListView di ASP.NET 3.5
- La gestione dello stato in ASP.NET 3.5
- Galleria fotografica dinamica con ASP.NET AJAX
- Real Code Birthday: 10 anni!
- Dal MIX08 la Preview2 di ASP.NET MVC
- Cosa c'è in ASP.NET 3.5 Service Pack1
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.








Stampa
Snippet
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!
ho provato ad eseguire lo script, il link viene creato correttamente ma il colore di sfondo della cella non cambia.Come mai?Questa è la mia funzione:...
Continua »»» | Rispondi »»»