Hi guys,
I have a RadGrid which is populated dynamically by SQL queries at runtime. I would like to add a total field for numeric columns in the footer, but since the column can be anything potentially, how do I programmatically determine the type of this column at runtime? I'm aggregating the total in the RadGrid's ItemDataBound event and looking to potentially storing the total for each relevant column in a hash table (using the column name as the key).
Cheers,
Norman
I have a RadGrid which is populated dynamically by SQL queries at runtime. I would like to add a total field for numeric columns in the footer, but since the column can be anything potentially, how do I programmatically determine the type of this column at runtime? I'm aggregating the total in the RadGrid's ItemDataBound event and looking to potentially storing the total for each relevant column in a hash table (using the column name as the key).
Cheers,
Norman
3 Answers, 1 is accepted
0
Princy
Top achievements
Rank 2
answered on 13 Dec 2010, 08:23 AM
Hello Norman,
Check out the following code snippet which shows how to find out the type of column and how to access its column UniqueName.
C#:
Thanks,
Princy.
Check out the following code snippet which shows how to find out the type of column and how to access its column UniqueName.
C#:
foreach (GridColumn col in RadGrid1.Columns) { if (col is GridNumericColumn)// checking for type of column { col.UniqueName//accessing column UniqueName } }Thanks,
Princy.
0
Norman
Top achievements
Rank 1
answered on 13 Dec 2010, 11:45 PM
Hi Princy,
Cheers for the help. I'm not entirely sure how your code listing will help me in this case. Here's a snippet of code along the lines of what I was thinking of doing, which will hopefully clarify things:
Thanks for your help!
Cheers for the help. I'm not entirely sure how your code listing will help me in this case. Here's a snippet of code along the lines of what I was thinking of doing, which will hopefully clarify things:
Protected Sub RadGrid1_ItemDataBound(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles RadGrid1.ItemDataBound If TypeOf e.Item Is GridDataItem Then ' If our field is of the right type, aggregate total for this column Dim dataItem As GridDataItem = CType(e.Item, GridDataItem) If ' Check if numeric...
' Add to total for this column totals(dataItem.ItemIndex).AddToTotal(' Converted type) End If ElseIf TypeOf e.Item Is GridFooterItem ' And numeric... ' If our field is of the right type, display a total for this column Dim footerItem As GridFooterItem = CType(e.Item, GridFooterItem)
' Read from total for this column
footerItem("Total").Text = totals(footerItem.ItemIndex).ToString()
End IfEnd SubThanks for your help!
Protected Sub RadGrid1_ItemDataBound(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles RadGrid1.ItemDataBound
If TypeOf e.Item Is GridDataItem Then
' If our field is of the right type, aggregate total for this column
Dim dataItem As GridDataItem = CType(e.Item, GridDataItem)
If TypeOf dataItem.DataItem Is Integer Then
totals(dataItem.ItemIndex).AddToTotal(CType(dataItem.DataItem, Integer))
ElseIf TypeOf e.Item.DataItem Is Double Then
totals(dataItem.ItemIndex).AddToTotal(CType(dataItem.DataItem, Double))
End If
ElseIf TypeOf e.Item Is GridFooterItem And (TypeOf e.Item.DataItem Is Integer Or TypeOf e.Item.DataItem Is Double) Then
' If our field is of the right type, display a total for this column
Dim footerItem As GridFooterItem = CType(e.Item, GridFooterItem)
footerItem("Total").Text = totals(footerItem.ItemIndex).ToString()
End If
End Sub
0
Hi Norman,
Isn't it easier to just get the original data item that was used to bind the current GridDataItem instance?
This way, you can extract data values directly. If not, you need to parse the cell Text to the correct type in item cells:
Veli
the Telerik team
Isn't it easier to just get the original data item that was used to bind the current GridDataItem instance?
Protected Sub RadGrid1_ItemDataBound(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles RadGrid1.ItemDataBound If TypeOf e.Item Is GridDataItem Then Dim gridItem As GridDataItem = e.Item Dim sourceItem as Object = gridItem.DataItem 'sourceItem is the original data source item used to bind the current 'GridDataItem. You can cast it to the correct type (e.g. DataRowView) 'and use its value for aggregation End IFEnd SubThis way, you can extract data values directly. If not, you need to parse the cell Text to the correct type in item cells:
Protected Sub RadGrid1_ItemDataBound(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles RadGrid1.ItemDataBound If TypeOf e.Item Is GridDataItem Then Dim gridItem As GridDataItem = e.Item Dim numValStr As String = gridItem("NumericColumnName").Text Dim numVal As Double = Double.Parse(numValStr) End IFEnd SubVeli
the Telerik team
Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.