Raga, dovrei aggiungere una header (oltre a quella ufficiale) ad un DG per evidenziare raggruppamenti di colonne. E' possibile ? Suggerimenti ?
Raga, dovrei aggiungere una header (oltre a quella ufficiale) ad un DG per evidenziare raggruppamenti di colonne. E' possibile ? Suggerimenti ?
press play on tape
-----
MP3 Listing
https://sourceforge.net/projects/mp3-listing
File Listing
https://sourceforge.net/projects/file-listing-2-0/
La DataGrid è molto limitata. Dovresti utilizzare grid di terze parti che lotre ai raggruppamenti hanno un sacco di altre funzionalità come le sottogrid, i filtri con drag & drop, ecc...
vedi se questo ti può servire
http://www.raffaellosartori.it/renderDatagrid.html
"...non è detto che sia tardi se non guardi che ora è..."
Originariamente inviato da Nazareno
La DataGrid è molto limitata. Dovresti utilizzare grid di terze parti che lotre ai raggruppamenti hanno un sacco di altre funzionalità come le sottogrid, i filtri con drag & drop, ecc...
Ma dai, suche non è così limitato
![]()
Con un po' di buona volontà se ne possono cavare tante cose![]()
Comunque, gentilissimo djcikohai preso in considerazione la possibilità di costruirti l'html della tabella da programma, lasciando a perdere DataGrid e similari?
![]()
Nota che si può replicare molto bene un report tipo Access, con Intestazioni, gruppi, sottogruppi, totali, subtotali, dettagli ect etc
Basta pigliare una tabella ordinata, scandire recor per record, tenere conto della rottura dell'indice etc etc![]()
ps. se vuoi proprio un DataGrid o un GridView, spiega un po' meglio cosa vuoi, che ci proviamo![]()
![]()
Pietro
Innanzitutto grazie a Raffaello per l'esempio postato, è una valida soluzione.
Partendo da qui > http://www.codeproject.com/aspnet/Me...gridHeader.asp
infatti, si capisce come, renderizzando diversamente l'header del DG e con l'aiuto dell'HtmlTextWriter, si puo' fare cio' che si vuole.
Ho paura però che questa soluzione mi faccia pervenire troppe domande dalla squadra e dai futuri membri....Dovrebbe essere una roba piu' di uso comune.
Prima di adottarla, quindi, voglio provare ad usare (due prove):
1) Un repeater con un HeaderTemplate
2) Nell'ItemDataBound calcolare la somma in Unit.Pixel e costruirmi una tabella lato server con le stesse misure, in testa alla testata del DG
Se non mi convince il risultato, seguiro' poi anche il consiglio di padre Pietro da Arbatax, sempre saggio ed efficace.........
![]()
press play on tape
-----
MP3 Listing
https://sourceforge.net/projects/mp3-listing
File Listing
https://sourceforge.net/projects/file-listing-2-0/
il metodo di CodeProject funziona alla grande. E' abbastanza semplice da poterlo adottare.
In pochi passi, ecco come aggiungere una Header sopra la Header ufficiale:
Nell'ItemCreated del Datagrid:
codice:Private Sub Datagrid_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles Datagrid.ItemCreated If e.Item.ItemType = ListItemType.Header Then ' Reindirizzo il metodo render di default ad un mio metodo custom e.Item.SetRenderMethodDelegate(AddressOf DjCiko_CustomRender) End If End Subed il risultato (nel mio caso) è una cosa come questa: (la header in blu scuro è quella ufficiale, quella in azzurrino è l'aggiunta)codice:Public Sub DjCiko_CustomRender(ByVal writer As HtmlTextWriter, ByVal ctl As Control) ' ...non c'e' bisogno della apertura <TR> perche' il writer la mette in automatico... writer.Write("<TD bgcolor=#99CCFF colspan=4 align=center><font color=darkblue>CONTROLLI</font></TD>") writer.Write("<TD bgcolor=#99CCFF colspan=2 align=center><font color=darkblue>RDA</font></TD>") writer.Write("<TD bgcolor=#99CCFF colspan=2 align=center><font color=darkblue>ODA</font></TD>") writer.Write("<TD bgcolor=#99CCFF colspan=2 align=center><font color=darkblue>EFFETTIVO</font></TD>") writer.Write("<TD bgcolor=#99CCFF colspan=2 align=center><font color=darkblue>SOMME</font></TD>") writer.Write("</TR>") Datagrid.HeaderStyle.AddAttributesToRender(writer) ' Ricostruisco la testata originale generata dal datagrid writer.RenderBeginTag("TR") Dim ind As Integer = 0 Do While ind <= ctl.Controls.Count - 1 ctl.Controls(ind).RenderControl(writer) ind += 1 Loop ' ...non c'e' bisogno della chiusura </TR> perche' il writer la mette in automatico... End Sub
![]()
press play on tape
-----
MP3 Listing
https://sourceforge.net/projects/mp3-listing
File Listing
https://sourceforge.net/projects/file-listing-2-0/
:master: non conoscevo questa tecnica: interessante, e semplice.![]()
Pietro