Ich habe ein Datagrid, das an ein Dataset gebunden wird, und ich möchte das durchschnittliche Ergebnis in der Fußzeile für eine Spalte anzeigen, die mit Ganzzahlen gefüllt wird.Datagrid: Berechnung von Avg oder Summe für Spalte in Footer
So wie ich Figur, gibt es zwei Möglichkeiten, wie ich denken kann:
1. "Verwenden Sie die Quelle, Luke"
In dem Code, wo ich DataGrid.DataBind() bin Aufruf, verwenden Sie die DataTable.Compute() -Methode (oder in meinem Fall DataSet.DataTable (0) .Compute()). Zum Beispiel:
Dim strAverage = DataTable.Compute("Avg(ColumnName)", "")
Aber sobald ich dies habe, wie kann ich es in die Fußzeile einfügen?
2. "Bound for Glory"
Mit dem DataGrid.ItemDataBound Ereignis, und Berechnen einer laufenden Summe von jedem ListItemType.Item und ListItemType.AlternatingItem schließlich in ListItemType.Footer anzuzeigen. Zum Beispiel:
Select Case e.Item.ItemType
Case ListItemType.Item, ListItemType.AlternatingItem
runningTotal += CInt(e.Item.Cells(2).Text)
Case ListItemType.Footer
e.Item.Cells(2).Text = runningTotal/DataGrid.Items.Count
End Select
Das fühlt sich einfach falsch an, und ich müsste sicherstellen, dass das runningTotal auf jedem DataBind zurückgesetzt wird.
Gibt es einen besseren Weg?