Berechnete Zellen in Telerik RadGrid der GridGroupFooterItem
Frage
Ich bin bevölkern eine Telerik RadGrid mit Daten aus einer Datentabelle (System.Data.DataTable
). Als ich die Unterstützung Anwendung jemand anderes, ich kann keine andere Datenquelle oder Display-Steuerung verwendet werden.
In meinem Gitter habe ich drei Spalten: Lassen Sie uns sagen, sie sind Widgets Produktion (Spalte A), Fehlerhafte Widgets (Spalte B) und Fehlerhaftigkeit Anteil (Spalte C). Die Datenbankabfrage liefert für mich diese und macht die Berechnung C = B / A.
habe ich eine Summenzeile (a Telerik GridFooterItem
) am unteren Rand des Rasters. In den Spalten A und B Telerik berechnet die Summen für die Spalten für mich. Wir können nicht den richtigen Wert für die ‚Gesamt‘ die Spalte C aus Spalte C berechnen allein. Wir es mit (die Summe aus B) füllen müssen / (die Summe von A)
Ich habe es geschafft, dies zu tun, indem Sie die DataBound
Ereignis des RadGrid Handhabung und manuell die Zellen in der Fußzeile bevölkern. (Ich hatte das GridFooterItem
im ItemCreated
Ereignis zu fangen, dann in sie Werte in der DataBound
Ereignis, nachdem er automatisch die Summen für A und B für mich berechnet hatte.) Das fühlt sich ziemlich hacky - vielleicht ist es eine bessere Art und Weise ... ?
Wie auch immer, das wichtige Bit ist diese:
Meine Gitter ist aufgeteilt in Gruppen, so brauche ich auch zu bevöl Spalte C in den GridGroupFooterItem
s. Ich kann nicht meine Hacky Technik zur Arbeit in diesem Fall bekommen: Ich finde die Fußzeile Zelle I mit myGridFooterItem["WidgetsProduced"]
will, aber ich kann nicht die Gruppenfuß Zellen mit myGridGroupFooterItem["WidgetsProduced"]
bekommen - es ist einfach nicht ein Wörterbuch
Ich habe mit myGridGroupFooterItem.Cells[]
versucht, aber diese TableCellCollection
enthält ein paar mehr Zellen als ich erwarten würde, so sie durch Integer-Index zugreifen fühlt sich ein bisschen ropey (vor allem, da dies ein benutzerdefinierter Bericht, so dass die Spalten sein kann in beliebiger Reihenfolge).
So: Wie fülle ich diese Zellen mit meiner Berechnung
?Lösung
Ihr Artikel Databound-Ereignis sieht so etwas wie
grd_ItemDataBound(object sender,GridItemEventArgs e)
{
//catch the footer element
if(e.Item.ItemType==GridItemType.GroupFooter)
{
(e.Item.FindControl("yourTextBox") as TextBox).Text = your calculated value
}
}
Andere Tipps
ich doppelt geprüft, ob eindeutige Namen Indexer arbeitet mit Q2 2009 Q3 2009-Version von RadGrid für ASP.NET AJAX und es funktionierte auf meinem Rechner. Überprüfen Sie Ihre Version und bitten um weitere Hilfe mit dem Telerik Foren , wenn nötig.
Dick
Versuchen Sie diese
In Aspx Seite:
<telerik:GridBoundColumn Aggregate="Sum" DataField="Price" DataFormatString="{0:C}" EmptyDataText="0" FooterText="Total :" HeaderText="Price" UniqueName="Price"> ...
(Oder)
In-Code hinter der Seite:
Private Sub RadGrid1_ItemDataBound(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles RadGrid1.ItemDataBound
Dim Item As GridDataItem
Dim value as Double
Select Case (e.Item.ItemType)
Case Telerik.Web.UI.GridItemType.AlternatingItem, Telerik.Web.UI.GridItemType.EditItem,Telerik.Web.UI.GridItemType.Item,Telerik.Web.UI.GridItemType.SelectedItem
Item = e.Item
'------ Calculate Total amount -----------
Item("TotalPayment").Text = CDbl(Item("TotalPayment").Text)
value += CDec(Item("TotalPayment").Text)
Case Telerik.Web.UI.GridItemType.Footer
'------ Display the total amount in Footer ------
Dim footerItem As GridFooterItem = e.Item
If Not RadGrid1.Items.Count = 0 Then footerItem("TotalPayment").Text = "Total :" + value
End Select
End Sub
Nun, wenn Sie benutzerdefinierte Formel zu berechnen Ergebnisse anstelle von Standardaggregate wie Summe verwenden, durchschnittlich und so weiter, müssen Sie wahrscheinlich auf Ihre eigene Logik verlassen. Die Zellen aus der Gruppe Fußzeilen sollen eindeutige Namen Wende sein - ich erinnere mich diese nicht mit früheren Telerik ASP.NET Grid-Versionen unterstützt, aber diese wurde in neueren Versionen hinzugefügt -. Q2 oder Q3 2009
Dick