Se fai così hai un totale direttamente nella fonte dati.
Essendo impossibilitato a provarla con i tuoi campi ti ho fatto una query di esempio con il database northwind:
codice:
select * from(
select
case grouping(orderid) when 0 then orderid else -1 end as id1,
case grouping(orderid) when 0 then productid when 1 then productid end as id2,
sum(unitprice) as prezzo
from [order details]
group by productid , orderid with rollup
)as tabella where not tabella.id2 is null
La colonna id1 dovrebbe corrispondere alla tua "voce"
La colonna id2 dovrebbe corrispondere alla tua "raggruppamento"
La colonna prezzo dovrebbe corrispondere alla tua "valore"
La prima select usa il risultato della seconda come tabella da interrogare, questo perchè dovevo escludere il totale generale che viene per forza inserito utilizzando questo sistema.
Nel caso ti servisse togli la prima select.
Poi nell'itemcreated del datagrid analizzi il valore di id1(che metterai come datakeyfield), se è = a -1 imposti la riga come meglio credi(testo,colore di fondo, colspan ecc.. per distinguerla)
Sono stato un po' avaro di spiegazioni ma, magari sono argomenti che conosci meglio di me e, invece se non sei pratica ti conviene cercare documentazione per "rollup" oppure "grouping" nei books on line di sql.
Ciao
Legnetto