Hello,
I'm trying to export the contents of a RadGrid that has a child RadGrid in its NestedViewTemplate to Excel format. I've found some examples on how to export the contents of a RadGrid to Excel, however, those examples only seem to export the parent radgrid's contents and not the child content. Is there a way to do this? An example would be very much appreciated. Thanks.
Here's my code for the RadGrid:
<telerik:RadButton ID="btnExportToExcel" runat="server" Text="Export to Excel" OnClick="btnExportToExcel_Click"></telerik:RadButton> <telerik:RadGrid ID="grdViewInventory" runat="server" AutoGenerateColumns="False" AllowPaging="false" AllowSorting="false" OnColumnCreated="grdViewInventory_ColumnCreated" OnNeedDataSource="grdViewInventory_NeedDataSource" Skin="Metro" ShowHeader="false" ShowFooter="false" CssClass="IV_MasterGrid" CellPadding="0" CellSpacing="0"> <MasterTableView HierarchyDefaultExpanded="true" HierarchyLoadMode="ServerOnDemand" EnableNoRecordsTemplate="true" ShowHeadersWhenNoRecords="true" DataKeyNames="DataKey" RetainExpandStateOnRebind="true"> <NoRecordsTemplate> <div class="div_NoRecordsTemplate">No Components Found.</div> </NoRecordsTemplate> <NestedViewSettings> <ParentTableRelation> <telerik:GridRelationFields DetailKeyField="DataKey" MasterKeyField="DataKey" /> </ParentTableRelation> </NestedViewSettings> <NestedViewTemplate> <telerik:RadGrid ID="rgNestedViewInventory" runat="server" AutoGenerateColumns="false" Width="99.5%" CssClass="IV_NestedGrid" OnNeedDataSource="rgNestedViewInventory_NeedDataSource"> <MasterTableView EnableNoRecordsTemplate="true" ShowHeadersWhenNoRecords="true" TableLayout="Fixed"> <Columns> <telerik:GridBoundColumn DataField="FilterType" HeaderText="Filter Type" ReadOnly="True" UniqueName="FilterType"> <HeaderStyle CssClass="IV_FT_Nested" Wrap="false" /> <ItemStyle CssClass="IV_FT_Nested" Wrap="false" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="ModelNumber" HeaderText="Model Number" ReadOnly="True" UniqueName="ModelNumber"> <HeaderStyle CssClass="IV_MN_Nested" Wrap="false" /> <ItemStyle CssClass="IV_MN_Nested" Wrap="false" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="PartNumber" HeaderText="Part Number" ReadOnly="True" UniqueName="PartNumber"> <HeaderStyle CssClass="IV_PN_Nested" Wrap="false" /> <ItemStyle CssClass="IV_PN_Nested" Wrap="false" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="FilterDimension" HeaderText="Filter Size" ReadOnly="True" UniqueName="FilterDimension"> <HeaderStyle CssClass="IV_FDE_Nested" Wrap="false" /> <ItemStyle CssClass="IV_FDE_Nested" Wrap="false" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Quantity" HeaderText="Quantity" ReadOnly="True" UniqueName="FilterManufacturer"> <HeaderStyle CssClass="IV_QTY_Nested" Wrap="false" /> <ItemStyle CssClass="IV_QTY_Nested" Wrap="false" /> </telerik:GridBoundColumn> </Columns> </MasterTableView> </telerik:RadGrid> </NestedViewTemplate> <Columns> <telerik:GridTemplateColumn UniqueName="GroupHeaderColumn" Resizable="false" SortExpression="PropertyNumber"> <ItemTemplate> <asp:Label runat="server" ID="Label1" Text='<%# Eval("Building") %>' /> <asp:Label runat="server" ID="Label2" Text='<%# " - (" + Eval("PropertyNumber") + ") - " %>' /> <asp:Label runat="server" ID="Label4" Text='<%# Eval("UnitTag") %>' /> <asp:Label runat="server" ID="Label3" Text='<%# " - " + Eval("AHUType") %>' /> <asp:Label runat="server" ID="Label5" Text='<%# " - " + Eval("Configuration") %>' /> </ItemTemplate> <ItemStyle CssClass="IV_MasterGrid_GroupHeader" /> </telerik:GridTemplateColumn> </Columns> </MasterTableView></telerik:RadGrid>
Here's my C# code-behind:
protected void grdViewInventory_NeedDataSource(object sender, GridNeedDataSourceEventArgs e){ siteID = ApplicationDTO.GetSiteID(); grdViewInventory.DataSource = BLL.GetInventoryHeader(siteID).GroupBy(x => x.DataKey).Select(y => y.First()).OrderBy(z => z.Building);}protected void grdViewInventory_ColumnCreated(object sender, GridColumnCreatedEventArgs e){ //Hides the expand/collapse column if (e.Column is GridExpandColumn) { e.Column.Visible = false; }}protected void btnExportToExcel_Click(object sender, EventArgs e){ grdViewInventory.ExportSettings.OpenInNewWindow = true; grdViewInventory.ExportSettings.ExportOnlyData = true; grdViewInventory.ExportSettings.IgnorePaging = true; grdViewInventory.ExportSettings.Excel.Format = GridExcelExportFormat.Xlsx; grdViewInventory.MasterTableView.Items[0].Expanded = true; RadGrid rgNestedViewInventory = (RadGrid)grdViewInventory.MasterTableView.Items[0].ChildItem.FindControl("rgNestedViewInventory"); rgNestedViewInventory.Rebind(); grdViewInventory.MasterTableView.HierarchyDefaultExpanded = true; grdViewInventory.MasterTableView.ExportToExcel();}protected void rgNestedViewInventory_NeedDataSource(object sender, GridNeedDataSourceEventArgs e){ RadGrid rgChild = (RadGrid)sender; GridNestedViewItem nesteditem = (GridNestedViewItem)rgChild.NamingContainer; string dataKey = Convert.ToString(nesteditem.ParentItem.GetDataKeyValue("DataKey")); (sender as RadGrid).DataSource = BLL.GetInventory(siteID).Where(x => x.DataKey == dataKey).OrderBy(y => y.PropertyNumber);}