Hi,
I am using telerik Nested Grid which consists of Two Detail Tables One is for groups and the other is for items. I have placed my lblTotalCost in a footertemplate of group and I want to calculate the total cost programatically but this works fine when the grid loads but when I update and insert and item in a grid a problem occurs. I am calculating total cost Using my CalculateTotalCost Method.
Any help would be greatly appreciated.
I am using telerik Nested Grid which consists of Two Detail Tables One is for groups and the other is for items. I have placed my lblTotalCost in a footertemplate of group and I want to calculate the total cost programatically but this works fine when the grid loads but when I update and insert and item in a grid a problem occurs. I am calculating total cost Using my CalculateTotalCost Method.
Any help would be greatly appreciated.
<
telerik:RadGrid
ID
=
"rgQuotation"
runat
=
"server"
Width
=
"95%"
ShowStatusBar
=
"true"
Skin
=
"Vista"
Font-Names
=
"Verdana"
AutoGenerateHierarchy
=
"true"
HierarchyLoadMode
=
"ServerBind"
AutoGenerateColumns
=
"False"
PageSize
=
"20"
AllowSorting
=
"True"
AllowMultiRowSelection
=
"False"
AllowPaging
=
"True"
ShowFooter
=
"True"
>
<
PagerStyle
Mode
=
"NumericPages"
></
PagerStyle
>
<
MasterTableView
Width
=
"100%"
DataKeyNames
=
"ID"
AllowMultiColumnSorting
=
"True"
CommandItemDisplay
=
"Top"
HierarchyDefaultExpanded
=
"true"
HierarchyLoadMode
=
"ServerOnDemand"
Name
=
"Quotation"
CssClass
=
"DetailTable_Default"
>
<
Columns
>
<
telerik:GridEditCommandColumn
ButtonType
=
"ImageButton"
UniqueName
=
"EditCommandColumn"
ItemStyle-Width
=
"30px"
EditImageUrl
=
"~/Portals/0/Images/Edit.gif"
>
</
telerik:GridEditCommandColumn
>
<
telerik:GridBoundColumn
SortExpression
=
"ID"
HeaderText
=
"ID"
HeaderButtonType
=
"TextButton"
DataField
=
"ID"
UniqueName
=
"ID"
ReadOnly
=
"true"
Visible
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
SortExpression
=
"TariffName"
HeaderText
=
"Quotation Name"
HeaderButtonType
=
"TextButton"
DataField
=
"TariffName"
UniqueName
=
"TariffName"
ReadOnly
=
"true"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
SortExpression
=
"RecordType"
HeaderText
=
"Rec Type"
HeaderButtonType
=
"TextButton"
DataField
=
"RecordType"
UniqueName
=
"RecordType"
ReadOnly
=
"true"
Visible
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
SortExpression
=
"JobID"
HeaderText
=
"Job No"
HeaderButtonType
=
"TextButton"
DataField
=
"JobID"
UniqueName
=
"JobID"
ReadOnly
=
"true"
Visible
=
"false"
>
</
telerik:GridBoundColumn
>
</
Columns
>
<
EditFormSettings
EditFormType
=
"Template"
InsertCaption
=
"New Quotation"
>
<
FormTemplate
>
<
div
>
<
asp:Label
ID
=
"lblTariffName"
runat
=
"server"
Text
=
"Quotation Name"
CssClass
=
"fieldsetControlStyle"
></
asp:Label
>
<
asp:TextBox
ID
=
"txtTariffName"
runat
=
"server"
Text='<%# Eval("TariffName") %>'></
asp:TextBox
>
<
asp:LinkButton
ID
=
"lnkbtnUpdate"
runat
=
"server"
CausesValidation
=
"True"
CommandName='<%# IIf( DataBinder.Eval(Container, "OwnerTableView.IsItemInserted"), "PerformInsert", "Update") %>'
CssClass="lnkButton" ToolTip="Update">
<
asp:Image
ID
=
"imgUpdate"
runat
=
"server"
ImageUrl
=
"~/Portals/0/Images/Update.gif"
/></
asp:LinkButton
>
<
asp:LinkButton
ID
=
"lnkbtnCancel"
runat
=
"server"
CausesValidation
=
"False"
CommandName
=
"Cancel"
CssClass
=
"lnkButton"
ToolTip
=
"Cancel"
>
<
asp:Image
ID
=
"imgCancel"
runat
=
"server"
ImageUrl
=
"~/Portals/0/Images/Cancel.gif"
/></
asp:LinkButton
>
</
div
>
</
FormTemplate
>
</
EditFormSettings
>
<
DetailTables
>
<
telerik:GridTableView
DataKeyNames
=
"GroupID"
HierarchyLoadMode
=
"ServerBind"
Width
=
"100%"
HierarchyDefaultExpanded
=
"true"
CommandItemDisplay
=
"Top"
runat
=
"server"
Name
=
"Groups"
CssClass
=
"DetailTable_Default"
>
<
Columns
>
<
telerik:GridEditCommandColumn
ButtonType
=
"ImageButton"
UniqueName
=
"EditCommandColumn"
ItemStyle-Width
=
"30px"
EditImageUrl
=
"~/Portals/0/Images/Edit.gif"
>
</
telerik:GridEditCommandColumn
>
<
telerik:GridBoundColumn
SortExpression
=
"GroupID"
HeaderText
=
"GroupID"
HeaderButtonType
=
"TextButton"
DataField
=
"GroupID"
UniqueName
=
"GroupID"
ReadOnly
=
"true"
Visible
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
SortExpression
=
"GroupName"
HeaderText
=
"Group Name"
HeaderButtonType
=
"TextButton"
DataField
=
"GroupName"
UniqueName
=
"GroupName"
>
<
ItemStyle
Font-Bold
=
"true"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
SortExpression
=
"TariffID"
HeaderText
=
"TariffID"
HeaderButtonType
=
"TextButton"
DataField
=
"TariffID"
UniqueName
=
"TariffID"
ReadOnly
=
"true"
Visible
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridTemplateColumn
>
<
FooterTemplate
>
<
asp:Label
ID
=
"lblTotalCost"
runat
=
"server"
Text
=
"Total Cost"
Font-Bold
=
"true"
CssClass
=
"lblTotalCost"
></
asp:Label
>
</
FooterTemplate
>
</
telerik:GridTemplateColumn
>
</
Columns
>
<
EditFormSettings
EditFormType
=
"Template"
InsertCaption
=
"New Group"
>
<
FormTemplate
>
<
div
>
<
asp:Label
ID
=
"lblGroupName"
runat
=
"server"
Text
=
"Group Name"
CssClass
=
"fieldsetControlStyle"
></
asp:Label
>
<
asp:TextBox
ID
=
"txtGroupName"
runat
=
"server"
Text='<%# Eval("groupname") %>'></
asp:TextBox
>
<
br
/>
<
asp:LinkButton
ID
=
"lnkbtnUpdate"
runat
=
"server"
CausesValidation
=
"True"
CommandName='<%# IIf( DataBinder.Eval(Container, "OwnerTableView.IsItemInserted"), "PerformInsert", "Update") %>'
CssClass="lnkButton">
<
asp:Image
ID
=
"imgUpdate"
runat
=
"server"
ImageUrl
=
"~/Portals/0/Images/Update.gif"
/></
asp:LinkButton
>
<
asp:LinkButton
ID
=
"lnkbtnCancel"
runat
=
"server"
CausesValidation
=
"False"
CommandName
=
"Cancel"
CssClass
=
"lnkButton"
ToolTip
=
"Cancel"
>
<
asp:Image
ID
=
"imgCancel"
runat
=
"server"
ImageUrl
=
"~/Portals/0/Images/Cancel.gif"
/></
asp:LinkButton
>
</
div
>
</
FormTemplate
>
</
EditFormSettings
>
<
CommandItemSettings
AddNewRecordText
=
"Add New Group"
AddNewRecordImageUrl
=
"~/Portals/0/Images/AddRecord.gif"
ShowRefreshButton
=
"false"
/>
<
DetailTables
>
<
telerik:GridTableView
DataKeyNames
=
"ID"
Width
=
"100%"
Name
=
"Items"
CommandItemDisplay
=
"Top"
CssClass
=
"DetailTable_Default!"
EditMode
=
"InPlace"
runat
=
"server"
HierarchyLoadMode
=
"Client"
>
<
Columns
>
<
telerik:GridEditCommandColumn
ButtonType
=
"ImageButton"
UniqueName
=
"EditCommandColumn"
UpdateImageUrl
=
"~/Portals/0/Images/Update.gif"
ItemStyle-Width
=
"40px"
EditImageUrl
=
"~/Portals/0/Images/Edit.gif"
CancelImageUrl
=
"~/Portals/0/Images/Cancel.gif"
>
</
telerik:GridEditCommandColumn
>
<
telerik:GridBoundColumn
SortExpression
=
"ID"
HeaderText
=
"ID"
HeaderButtonType
=
"TextButton"
DataField
=
"ID"
UniqueName
=
"ID"
ReadOnly
=
"true"
Visible
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
SortExpression
=
"ItemOrder"
HeaderText
=
"ItemOrder"
HeaderButtonType
=
"TextButton"
DataField
=
"ItemOrder"
UniqueName
=
"ItemOrder"
ReadOnly
=
"true"
Visible
=
"false"
>
</
telerik:GridBoundColumn
>
<%-- <
telerik:GridBoundColumn
SortExpression
=
"ItemName"
HeaderText
=
"Item Name"
DataField
=
"ItemName"
UniqueName
=
"ItemName"
>
UniqueName="ItemName">
</
telerik:GridBoundColumn
>--%>
<
telerik:GridTemplateColumn
HeaderText
=
"Item Name"
>
<
ItemTemplate
>
<
asp:Label
ID
=
"lblItemName"
runat
=
"server"
Text='<%# Eval("ItemName") %>'></
asp:Label
>
</
ItemTemplate
>
<
EditItemTemplate
>
<
asp:TextBox
ID
=
"txtItemName"
runat
=
"server"
Text='<%# Eval("ItemName") %>'></
asp:TextBox
>
<
asp:RequiredFieldValidator
ID
=
"rfvtxtItemName"
runat
=
"server"
ErrorMessage
=
"!"
Display
=
"Dynamic"
ControlToValidate
=
"txtItemName"
></
asp:RequiredFieldValidator
>
</
EditItemTemplate
>
<
ItemStyle
Width
=
"30%"
/>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"Rate"
>
<
ItemTemplate
>
<
asp:Label
ID
=
"lblUnits"
runat
=
"server"
Text='<%# Eval("Units") %>'></
asp:Label
>
</
ItemTemplate
>
<
EditItemTemplate
>
<
telerik:RadNumericTextBox
ID
=
"rntbRate"
ShowSpinButtons
=
"true"
IncrementSettings-InterceptArrowKeys
=
"true"
IncrementSettings-InterceptMouseWheel
=
"true"
runat
=
"server"
Type
=
"Number"
Width
=
"80px"
DbValue='<%# Eval("Units") %>' NumberFormat-DecimalDigits="2" MinValue="1" IncrementSettings-Step="1"
CssClass="fieldsetControlWidth fieldsetLine" />
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"Quantity"
>
<
ItemTemplate
>
<
asp:Label
ID
=
"lblQuantity"
runat
=
"server"
Text='<%# Eval("Quantity") %>'></
asp:Label
>
</
ItemTemplate
>
<
EditItemTemplate
>
<
telerik:RadNumericTextBox
ID
=
"rntbQuantity"
ShowSpinButtons
=
"true"
IncrementSettings-InterceptArrowKeys
=
"true"
IncrementSettings-InterceptMouseWheel
=
"true"
runat
=
"server"
Type
=
"Number"
Width
=
"80px"
DbValue='<%# Eval("Quantity") %>' NumberFormat-DecimalDigits="0" MinValue="0"
IncrementSettings-Step="1" CssClass="fieldsetControlWidth fieldsetLine">
<
ClientEvents
OnBlur
=
"Blur"
OnFocus
=
"Focus"
/>
</
telerik:RadNumericTextBox
>
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"C.P"
>
<
ItemTemplate
>
<
asp:Label
ID
=
"lblCostPrice"
runat
=
"server"
Text='<%# Format(DataBinder.Eval(Container.DataItem,"CostPrice"),"###,##0.00") %>'></
asp:Label
>
</
ItemTemplate
>
<
EditItemTemplate
>
<
telerik:RadNumericTextBox
ID
=
"rntbCostPrice"
ShowSpinButtons
=
"true"
IncrementSettings-InterceptArrowKeys
=
"true"
IncrementSettings-InterceptMouseWheel
=
"true"
runat
=
"server"
Type
=
"Number"
Width
=
"80px"
DbValue='<%# Eval("CostPrice") %>' NumberFormat-DecimalDigits="2" MinValue="0"
IncrementSettings-Step="1" CssClass="fieldsetControlWidth fieldsetLine" />
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"S.P"
>
<
ItemTemplate
>
<
asp:Label
ID
=
"lblSellingPrice"
runat
=
"server"
Text='<%# Format(DataBinder.Eval(Container.DataItem,"SellingPrice"),"###,##0.00") %>'></
asp:Label
>
</
ItemTemplate
>
<
EditItemTemplate
>
<
telerik:RadNumericTextBox
ID
=
"rntbSellingPrice"
ShowSpinButtons
=
"true"
IncrementSettings-InterceptArrowKeys
=
"true"
IncrementSettings-InterceptMouseWheel
=
"true"
runat
=
"server"
Type
=
"Number"
Width
=
"80px"
DbValue='<%# Eval("SellingPrice") %>' NumberFormat-DecimalDigits="2" MinValue="0"
IncrementSettings-Step="1" CssClass="fieldsetControlWidth fieldsetLine" />
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridCalculatedColumn
HeaderText
=
"C.P Total"
DataType
=
"System.Double"
FooterText
=
"C.P Total : "
UniqueName
=
"TotalCostPrice"
DataFields
=
"CostPrice,Units,Quantity"
Expression
=
"{0}/{1}*{2}"
Aggregate
=
"Sum"
DataFormatString
=
"{0:###,##0.00}"
FooterAggregateFormatString
=
"{0:£###,##0.00}"
/>
<
telerik:GridCalculatedColumn
HeaderText
=
"S.P Total "
UniqueName
=
"TotalSellingPrice"
DataFields
=
"SellingPrice,Units,Quantity"
Expression
=
"{0}/{1}*{2}"
DataType
=
"System.Double"
FooterAggregateFormatString
=
"{0:£###,##0.00}"
FooterText
=
"S.P Total : "
Aggregate
=
"Sum"
DataFormatString
=
"{0:###,##0.00}"
/>
</
Columns
>
<
CommandItemSettings
AddNewRecordText
=
"Add New Item"
AddNewRecordImageUrl
=
"~/Portals/0/Images/AddRecord.gif"
ShowRefreshButton
=
"false"
/>
<%--<
EditFormSettings
EditFormType
=
"Template"
InsertCaption
=
"New Item"
>
<
FormTemplate
>
<
div
>
<
asp:Label
ID
=
"lblItemName"
runat
=
"server"
Text
=
"Item Name"
CssClass
=
"fieldsetControlStyle"
></
asp:Label
>
<
asp:TextBox
ID
=
"txtItemName"
runat
=
"server"
Text='<%# Eval("ItemName") %>'></
asp:TextBox
>
<
br
/>
<
asp:Label
ID
=
"lblRate"
runat
=
"server"
Text
=
"Rate"
CssClass
=
"fieldsetControlStyle"
></
asp:Label
>
<
asp:TextBox
ID
=
"txtRate"
runat
=
"server"
Text='<%# Eval("Units") %>'></
asp:TextBox
>
<
br
/>
<
asp:Label
ID
=
"lblQuantity"
runat
=
"server"
Text
=
"Quantity"
></
asp:Label
>
<
telerik:RadNumericTextBox
ID
=
"rntbQuantity"
ShowSpinButtons
=
"true"
IncrementSettings-InterceptArrowKeys
=
"true"
IncrementSettings-InterceptMouseWheel
=
"true"
runat
=
"server"
Type
=
"Number"
Width
=
"80px"
NumberFormat-DecimalDigits
=
"0"
MinValue
=
"0"
IncrementSettings-Step
=
"1"
CssClass
=
"fieldsetControlWidth fieldsetLine"
/>
<
br
/>
<
asp:Label
ID
=
"lblCostPrice"
runat
=
"server"
Text
=
"Cost Price"
CssClass
=
"fieldsetControlStyle"
></
asp:Label
>
<
telerik:RadNumericTextBox
ID
=
"rntbCostPrice"
MinValue
=
"0"
runat
=
"server"
MaxLength
=
"6"
DbValue='<%# Bind("CostPrice") %>' Width="160px" Type="Currency" Culture="English (United Kingdom)">
</
telerik:RadNumericTextBox
>
<
br
/>
<
asp:Label
ID
=
"lblSellingPrice"
runat
=
"server"
Text
=
"Selling Price"
CssClass
=
"fieldsetControlStyle"
></
asp:Label
>
<
telerik:RadNumericTextBox
ID
=
"rntbSellingPrice"
MinValue
=
"0"
runat
=
"server"
MaxLength
=
"6"
DbValue='<%# Bind("SellingPrice") %>' Width="160px" Type="Currency" Culture="English (United Kingdom)">
</
telerik:RadNumericTextBox
>
<
br
/>
<
br
/>
<
asp:LinkButton
ID
=
"lnkbtnUpdate"
runat
=
"server"
CausesValidation
=
"True"
CommandName='<%# IIf( DataBinder.Eval(Container, "OwnerTableView.IsItemInserted"), "PerformInsert", "Update") %>'
CssClass="lnkButton" ToolTip="Update">
<
asp:Image
ID
=
"imgUpdate"
runat
=
"server"
ImageUrl
=
"~/Portals/0/Images/Update.gif"
/></
asp:LinkButton
>
<
asp:LinkButton
ID
=
"lnkbtnCancel"
runat
=
"server"
CausesValidation
=
"False"
CommandName
=
"Cancel"
CssClass
=
"lnkButton"
ToolTip
=
"Cancel"
>
<
asp:Image
ID
=
"imgCancel"
runat
=
"server"
ImageUrl
=
"~/Portals/0/Images/Cancel.gif"
/></
asp:LinkButton
>
</
div
>
</
FormTemplate
>
<%-- <
EditColumn
ButtonType
=
"ImageButton"
InsertText
=
"Insert Item"
UpdateText
=
"Update Item"
UpdateImageUrl
=
"~/Portals/0/Images/Update.gif"
InsertImageUrl
=
"~/Portals/0/Images/Update.gif"
UniqueName
=
"EditCommandColumn1"
CancelText
=
"Cancel edit"
>
</
EditColumn
>
</
EditFormSettings
>--%>
</
telerik:GridTableView
>
</
DetailTables
>
</
telerik:GridTableView
>
</
DetailTables
>
<
CommandItemSettings
AddNewRecordText
=
"Add new Quotation"
AddNewRecordImageUrl
=
"~/Portals/0/Images/AddRecord.gif"
ShowRefreshButton
=
"false"
ShowExportToPdfButton
=
"true"
/>
</
MasterTableView
>
<
ClientSettings
AllowKeyboardNavigation
=
"true"
EnableRowHoverStyle
=
"true"
>
<
ClientEvents
OnRowContextMenu
=
"RowContextMenu"
OnRowDblClick
=
"RowDblClick"
/>
<
Selecting
AllowRowSelect
=
"true"
/>
<
KeyboardNavigationSettings
EnableKeyboardShortcuts
=
"true"
AllowSubmitOnEnter
=
"true"
AllowActiveRowCycle
=
"true"
CollapseDetailTableKey
=
"LeftArrow"
ExpandDetailTableKey
=
"RightArrow"
/>
</
ClientSettings
>
</
telerik:RadGrid
>
Protected Sub CalculateTotalCost(Optional ByVal e As Telerik.Web.UI.GridItemEventArgs = Nothing)
For Each gdiQuotation As GridDataItem In rgQuotation.MasterTableView.Items
pdTotalCost = 0
For Each gdiGroups As GridDataItem In gdiQuotation.ChildItem.NestedTableViews(0).Items
For Each gdiItems In gdiGroups.ChildItem.NestedTableViews(0).Items
pdTotalCost = pdTotalCost + Convert.ToDecimal(gdiItems("TotalCostPrice").Text)
Dim nestedView As GridTableView = gdiQuotation.ChildItem.NestedTableViews(0)
For Each childfooter As GridFooterItem In nestedView.GetItems(GridItemType.Footer)
Dim lblTotalCost As Label = DirectCast(childfooter.FindControl("lblTotalCost"), Label)
lblTotalCost.Text = "Total C.P £" + pdTotalCost.ToString()
Next
Next
Next
Next
End Sub
Protected Sub rgQuotation_ItemDataBound(ByVal source As Object, ByVal e
As Telerik.Web.UI.GridItemEventArgs) Handles rgQuotation.ItemDataBound
If TypeOf e.Item Is GridDataItem And e.Item.OwnerTableView.Name = "Items" Then
CalculateTotalCost()
ElseIf TypeOf e.Item Is GridFooterItem And e.Item.OwnerTableView.Name = "Groups" Then
CalculateTotalCost
()
End If
End Sub