Hi! I'm new to ASP and the web in general so bear with me.
I need to add multiple footer rows to my RadGrid instance ; for the moment, however, I just want to add second one. I have currently a single footer row and it's working and displaying perfectly, for the record.
I found the following relevant question on these forums and tried implemeting it but it's not working : the code gets executed, and the new FooterItem gets added to the Controls but that second row just doesn't appear. I need to find out why and I'd be grateful if anyone could help me fix that problem.
ASP grid code
Relevant code behind
Of course if you need more precisions, just ask. Thank you for your help.
I need to add multiple footer rows to my RadGrid instance ; for the moment, however, I just want to add second one. I have currently a single footer row and it's working and displaying perfectly, for the record.
I found the following relevant question on these forums and tried implemeting it but it's not working : the code gets executed, and the new FooterItem gets added to the Controls but that second row just doesn't appear. I need to find out why and I'd be grateful if anyone could help me fix that problem.
ASP grid code
<div id="OrderMainContent"> <telerik:RadAjaxManager runat="server" ID="RadAjaxManager1"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="RadGrid1" /> <telerik:AjaxSetting AjaxControlID="txtQuantity"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="RadGrid1" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings> </telerik:RadAjaxManager> <telerik:RadInputManager ID="RadInputManager1" runat="server"> <telerik:NumericTextBoxSetting BehaviorID="NumericBehavior1" Type="Number" DecimalDigits="0"> <TargetControls> <telerik:TargetInput ControlID="RadGrid1" /> </TargetControls> </telerik:NumericTextBoxSetting> </telerik:RadInputManager> <telerik:RadGrid ID="RadGrid1" runat="server" Skin="Sunset" AllowSorting="True" AutoGenerateColumns="False" GridLines="None" ShowFooter="True" OnItemDataBound="RadGrid1_ItemDataBound" OnPreRender="RadGrid1_PreRender"> <MasterTableView DataKeyNames="ProductID" TableLayout="Fixed"> <RowIndicatorColumn> <HeaderStyle Width="20px"></HeaderStyle> </RowIndicatorColumn> <ExpandCollapseColumn> <HeaderStyle Width="20px"></HeaderStyle> </ExpandCollapseColumn> <Columns> <telerik:GridBoundColumn UniqueName="colProduct" HeaderText="<%$ Resources: SiteLabels, ProductOrderForm.lblProduct %>" HeaderStyle-HorizontalAlign="Center" DataField="ProdDesc"> <HeaderStyle HorizontalAlign="Center"></HeaderStyle> </telerik:GridBoundColumn> <telerik:GridTemplateColumn UniqueName="colQuantity" HeaderText="<%$ Resources: SiteLabels, ProductOrderForm.lblQuantity %>" HeaderStyle-HorizontalAlign="Center" DataField="OrderQty" ColumnEditorID="txtQuantity"> <HeaderStyle Width="90" /> <ItemStyle Width="90px" /> <ItemTemplate> <asp:TextBox ID="txtQuantity" runat="server" Width="50px" OnTextChanged="txtQuantity_TextChanged" AutoPostBack="true"> </asp:TextBox> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn UniqueName="colPrice" HeaderText="<%$ Resources: SiteLabels, ProductOrderForm.lblBasePrice %>" HeaderStyle-HorizontalAlign="Center" DataField="ProdUnitPrice"> <HeaderStyle Width="80px" /> <ItemStyle Width="80px" /> <ItemTemplate> <asp:Label ID="lblPrice" runat="server" Text='<%# Eval("ProdUnitPrice") %>' /> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridBoundColumn UniqueName="colNotes" HeaderText="<%$ Resources: SiteLabels, ProductOrderForm.lblNotes %>" HeaderStyle-HorizontalAlign="Center"> <HeaderStyle Width="200px" /> <ItemStyle Width="200px" /> </telerik:GridBoundColumn> </Columns> </MasterTableView> <ClientSettings> <Scrolling AllowScroll="True" UseStaticHeaders="True" /> </ClientSettings> </telerik:RadGrid></div>Relevant code behind
protected void RadGrid1_PreRender(object sender, EventArgs e){ AddFooterRow(sender as RadGrid);}private void AddFooterRow(RadGrid grid){ if (grid != null) { GridItem[] footerItems = grid.MasterTableView.GetItems(GridItemType.Footer); if (footerItems.Count() == 1) { GridTFoot foot = footerItems[0].Parent.Controls[0].Parent as GridTFoot; for (int i = 0; i < foot.Controls.Count; i++) { GridFooterItem item = foot.Controls[i] as GridFooterItem; if(item != null) { lastFooterPos = i; break; } } GridFooterItem existingFooter = foot.Controls[lastFooterPos] as GridFooterItem; GridFooterItem newFooterItem = new GridFooterItem(grid.MasterTableView, 0, 0); foreach(TableCell fc in existingFooter.Cells) { TableCell newFooterCell = new TableCell(); newFooterCell.Text = "allo"; newFooterItem.Cells.Add(newFooterCell); } foot.Controls.AddAt(lastFooterPos + 1, newFooterItem); } }}Of course if you need more precisions, just ask. Thank you for your help.
