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