Ciao a tutti
come da oggetto devo inserire un totale fatture suddiviso per scadenza all'interno di un gridview che ha lo scopo di mostrare un riepilogo.
facendo una googlata "mi sono fatto persuaso" che il sistema migliore è creare un datatable e intervenire su di esso per aggiungere la riga "totale" questo il codice
'calcolo il totale ed il totale per scadenza==================================================================================
Dim totale As Single
Dim dataCount As New DataTable
ds.Tables("scadenze").Columns.Add("tot")
dataCount = ds.Tables("scadenze").Clone
Dim data_scad_fatt As DateTime = CDate(ds.Tables("scadenze").Rows(0).Item("data_scadenza").ToString)
Dim countRow As Int32 = 0
For Each dr As DataRow In ds.Tables("scadenze").Rows
Dim data_scad_cicle As DateTime = dr("data_scadenza").ToString
Dim importoS As Single = calcolaTotale(dr("ID").ToString)
Dim totalFormat As String
dr.Item("tot") = String.Format("{0:n2}", importoS)
totale = totale + importoS
countRow = countRow + 1
If (data_scad_fatt <> data_scad_cicle) Then
Dim newDr As DataRow = dataCount.NewRow
For count As Int32 = 0 To newDr.ItemArray.Length - 1
dataCount.Columns(count).AllowDBNull = True
Next
newDr.Item("NOMINATIVO") = "Totale del: " + data_scad_fatt.ToString("d")
totalFormat = String.Format("{0:n2}", totale - importoS)
newDr.Item("tot") = totalFormat
dataCount.Rows.InsertAt(newDr, countRow)
totale = importoS
End If
dataCount.ImportRow(dr)
data_scad_fatt = data_scad_cicle
'l'ultima scadenza
totalFormat = String.Format("{0:n2}", totale)
If countRow = ds.Tables("scadenze").Rows.Count Then
Dim newDr As DataRow = dataCount.NewRow
For count As Int32 = 0 To newDr.ItemArray.Length - 1
dataCount.Columns(count).AllowDBNull = True
Next
newDr.Item("NOMINATIVO") = "Totale del: " + data_scad_fatt.ToString("d")
newDr.Item("tot") = totalFormat
dataCount.Rows.Add(newDr)
totale = importoS
End If
Next
'==============================================================================================================================
Grid.DataSource = dataCount
Grid.DataBind()
funziona tutto (o quasi)
purtroppo se una scadenza comprende una sola fattura la riga totale viene aggiunta prima di quella della fattura stessa.
ormai è qualche giorno che ci sbatto la testa ma non riesco a venirne a capo e ormai non ho più le risorse per risolverlo. Sono sicuro che è già capitato a qualcuno di voi e sono altrettanto sicuro che si può trovare un sistema più efficiente magari eliminando anche l'ultimo controllo per l'ìultima riga. Voi come fareste?
grazie
Marco
Modificato da marco440 il 21 maggio 2008 11.00 -
Modificato da marco440 il 21 maggio 2008 11.01 -