mercoledì 20 gennaio 2010

tr onmouseover

Mamma mia quanto sembra facile ... ma qunato a volte non lo è ...
So che tempo fa avevo pubblicato un po simile, sull'evento onItemDatabound, ma ho trovato un sistema un po più semplice.
Probabilmente non è efficissimo o non è velcissimo ma su grid paginate ha il suo bel ritorno.

Punto 1: il foglio di sitle.
Sembra una cosa da poco ma non lo è, ma se seguite questo esempietto vi ritroverete.

.Normal {font-family:Arial, Tahoma; font-size:10px; border:1px solid #acacaa;}
.Normal td { text-align:Center; border:1px solid #acacaa;}
.Normal th { text-align:Center; background:#dededa; border:1px solid #acacaa}
.trHL {background:Lime;}
.trN {background:transparent;}

Normal è assegnato alla grid,
trHL no (non per il momento)
trN no (non per il momento)

Tuttavia è necessario comprendere che tutto quello che vi serve nelle celle (td) deve essere dato alla GRIGLIA e
non allo stile Td.

Punto 2: il codice js.
Il tutto funziona e ha senso se e solo se nel tr aggiungete questi due attributi..
onmouseover="this.className='trHL'"
onmouseout="this.className='trN'"

Il this non tralasicatelo perchè il mouse over e il mouse out sono eventi della Griglia, (this) a cui andreanno cambiati
gli attributi. Chiaro è che se li si rumuovno ci si ritova un risultato inatteso.. non VA.

Punto 3: il codice c#
is ponga che :

dataPresentation >> è una grid view
DataSource();>> è un metodo che associa una DataTable al dataSource della dataPresentation...
questo frammento debba essere inserito o nella load della pagina che contine la grid

dataPresentation.AutoGenerateColumns = false;
DataSource();

for (int i = 0; i < dataPresentation.Rows.Count; i++)
{
dataPresentation.Rows[i].Attributes.Add("onmouseover","this.className='trHL'" );
dataPresentation.Rows[i].Attributes.Add("onmouseout", "this.className='trN'");
}

Assicuratevi inoltre che la grid abbia un numero di elementi per pagina più o meno basso...

Chiaro che un for da 1 a 25 .. o 120 o 200 è sempre un for... ma è inutile lasciare un utente in attesa
per una gigioneria.

Nessun commento: