Cambio colore record datagrid al passaggio mouse

venerdì 12 settembre 2003 - 11.08

Nicola Profilo | Senior Member

Qualè la proprietà da settare al datagrid
per fare in modo che al passaggio del mouse
i vari record possano cambiare il colore.

Praticamente come i datagrid del sito dotnethell...
al passaggio i vari record diventano azzurrini...

grazie

ciaoooo

Admin Profilo | Junior Member

prova a guardare il source html di questa pagina... (Menu Visualizza->HTML)

è un javascript. Non esiste una proprietà specifica di DataGrid, è una cosa che ha implementando David, integrando ASP.NET con del codice client in javascript.

Nota:
onmouseover="Ov(this)" onmouseout="Ou(this)"

Credo che basti attaccarsi all'itemdatabound di datagrid, e fare qualcosa del genere:

private void CategoriesList_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
{
e.Item.Attributes.Add("onmouseover", "Ov(this)");
e.Item.Attributes.Add("onmouseout", "Ou(this)");
}
}

Ciao !

Stefano

Nicola Profilo | Senior Member

Non ho capito bene...
il richiamo nel datagrid... e il VB

GRAZIE

NB

Admin Profilo | Junior Member

vedo di spiegarmi meglio...

Il codice che ti ho postato non è in VB.NET, ma in C#.
Te lo traduco al volo il VB.NET:

private sub MyDataGrid_ItemDataBound(sender as Object, e RepeaterItemEventArgs) Handles MyDataGrid.ItemDataBound
if ((e.Item.ItemType = ListItemType.Item) or (e.Item.ItemType = ListItemType.AlternatingItem))
e.Item.Attributes.Add("onmouseover", "Ov(this)");
e.Item.Attributes.Add("onmouseout", "Ou(this)");
end if
end sub

Allora... la routine MyDataGrid_ItemDataBound è un handler per l'evento ItemDataBound di MyDataGrid. Questo evento viene generato ad ogni riga che sta per essere creata nella datagrid in questione.

"Attaccarti" a questo evento ti permetterà di eseguire del codice per aggiungere degli attributi alla riga creata dal datagrid. La if che vedi serve a controllare che il codice venga eseguito soltanto per le righe di dati, e non quindi anche per l'header e footer della griglia.

Spero di essermi spiegato bene, e di esserti stato d'aiuto.

Ciao!

Stefano Giannone [MCP .NET]

Nicola Profilo | Senior Member

ok adesso la sub devo legarla al mio datagrid...
quelle che ho implementato per la gestione dei vari recordi sono cosi:

OnUpdateCommand="MioDatagrid_UpdateCommand"

adesso quella del cambio colore?

................="MioDatagrid_ItemDataBound"

nel tag principale del mio datagrid?
<asp:DataGrid id="MioDatagrid" ...................


ciao NB

Admin Profilo | Junior Member

dovrebbe bastarti copiare ed incollare nel tuo code-behind la mia routine...

E quindi sostituire MyDataGrid con il nome della tua datagrid.

Questo da per scontato che nel code-behind ci sia dichiarata la variabile a livello di classe per la datagrid (lo fa automaticamente VS.NET quando aggiungi il controllo alla web form).

Ti consiglio di dare più spesso un'occhiata alla documentazione del .net framework che dovresti avere installata sulla tua macchina se hai installato l'SDK.

A volte basta cercare lì, e trovi esempi e reference sui vari controlli e non solo.

Ciao, alla prossima

Stefano Giannone [MCP .NET]

Nicola Profilo | Senior Member

Messaggio di errore del compilatore: BC30529:
Se un parametro è tipizzato, allora devono esserlo tutti i parametri.



Mi esce questo errore!

ciao Nicola

Admin Profilo | Junior Member

sostituisci la dichiarazione della routine, con questa:

private sub MyDataGrid_ItemDataBound(sender as Object, e as DataGridItemEventArgs)

Mio errore... avevo dimenticato la AS, e lasciato RepeaterItemEventArgs anzichè DataGridItemEventArgs.

Ciao

Stefano Giannone [MCP .NET]

Nicola Profilo | Senior Member

quasi ci siamo

errore di carattere:

e.Item.Attributes.Add("onmouseover", "Ov(this)");

graziee

Admin Profilo | Junior Member

sì, infatti... basta togliere il ";" finale...

Ciao

Stefano Giannone [MCP .NET]

Nicola Profilo | Senior Member

ok! il datagrid non fa niente!
le celle non cambiano colore...
ma nell'oggetto datagrid nel code HTML non faccio niente?

Admin Profilo | Junior Member

guarda l'html di questa pagina e guarda l'html della tua pagina... vedi se manca qualcosa. Secondo me manca il javascript, che non ti sei copiato.

Controlla se nelle <tr> della datagrid ci sono le 2 chiamate allo script client (onmouseover, etc.)

Ciao

Stefano Giannone

Nicola Profilo | Senior Member

mi cambia colore tutta la tr della tabella html dove sta il datagrid... e non il singolo record del mio datagrid....
che casino!

Nicola Profilo | Senior Member

il cambio colore devo richiamarlo non nel <tr> ma nei vari record del datagrid
caricati dinamicamente, mettendolo nel <tr> mi si colora tutto il tr che racchiude TUTTO il mio datagrid... help

grazie per il vostro cortese aiuto

ciao Nicola

Admin Profilo | Junior Member

Nicola,

probabilmente non riesco a farmi capire... ovviamente lo script non va messo nella <tr> in cui è contenuta la datagrid... questo mi sembra scontato.

Lo script dovrà andare a finire nelle <tr> generate in output dal controllo DataGrid, in base ai dati che gli vengono passati come DataSource... da questo ne deriva appunto il discorso che ti facevo del:

e.Item.Attributes.Add("onmouseover", "Ov(this)")

che serve appunto ad aggiungere un nuovo attributo alla riga appena generata.

Ciao

Stefano Giannone [MCP .NET]
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5