This is a migrated thread and some comments may be shown as answers.

Export Heiarchieal Radgrids

4 Answers 82 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Kevin
Top achievements
Rank 1
Kevin asked on 03 Jan 2014, 06:41 PM
Trying to export my sub grid as well but it seems to not work, following the instructions found on teleriks sites but to no avail.

Mu grid is wrapped in update panel and it works to export the main grid just fine just no sub grids come along.  Here is the code I put in to take care of the issue but nothing.  I am using all the radgrid advanced data binding methods.

<CommandItemTemplate>
           <asp:Button ID="btnExport" runat="server" CommandName="ExportToExcel" Text="Export Excel" />
</CommandItemTemplate>
 
  Protected Sub myRadGrid_ItemCommand(sender As Object, e As GridCommandEventArgs) Handles myRadGrid.ItemCommand
        If e.CommandName = "ExportToExcel" Then
            For Each item As GridItem In myRadGrid.MasterTableView.Items
                item.Expanded = True
            Next
            isExport = True
        End If
    End Sub
 
 
 Protected Sub myRadGrid_ItemCreated(sender As Object, e As GridItemEventArgs) Handles myRadGrid.ItemCreated
        If Not isExport Then
            If TypeOf e.Item Is GridCommandItem Then
                ScriptManager.GetCurrent(Page).RegisterPostBackControl(e.Item.FindControl("btnExport"))
            End If
        End If
    End Sub


4 Answers, 1 is accepted

Sort by
0
Princy
Top achievements
Rank 2
answered on 04 Jan 2014, 05:20 AM
Hi Kevin,

Below is a sample code snippet that i tried which works fine at my end, can you please give a try and check what is the difference with yours.

ASPX:
<telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server" ClientEvents-OnRequestStart="onRequestStart">
    <telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="False" AllowPaging="True"
        OnDetailTableDataBind="RadGrid1_DetailTableDataBind" OnNeedDataSource="RadGrid1_NeedDataSource"
        OnItemCommand="RadGrid1_ItemCommand">
        <ExportSettings ExportOnlyData="true" IgnorePaging="true" OpenInNewWindow="true">
        </ExportSettings>
        <MasterTableView DataKeyNames="OrderID" Name="Parent" HierarchyLoadMode="Client"
            CommandItemDisplay="Top">
            <CommandItemTemplate>
                <asp:Button ID="btnExport" runat="server" CommandName="ExportToExcel" Text="Export Excel" />
            </CommandItemTemplate>
            <DetailTables>
                <telerik:GridTableView AutoGenerateColumns="false" DataKeyNames="OrderID" Name="Orders"
                    CommandItemDisplay="Bottom">
                    <Columns>
                        <telerik:GridBoundColumn SortExpression="UnitPrice" HeaderText="Unit Price" HeaderButtonType="TextButton"
                            DataField="UnitPrice">
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn SortExpression="Quantity" HeaderText="Quantity" HeaderButtonType="TextButton"
                            DataField="Quantity">
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn SortExpression="Discount" HeaderText="Discount" HeaderButtonType="TextButton"
                            DataField="Discount">
                        </telerik:GridBoundColumn>
                    </Columns>
                </telerik:GridTableView>
            </DetailTables>
            <Columns>
                <telerik:GridBoundColumn SortExpression="OrderID" HeaderText="OrderID" HeaderButtonType="TextButton"
                    DataField="OrderID" ReadOnly="true">
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn SortExpression="OrderDate" HeaderText="Date Ordered" HeaderButtonType="TextButton"
                    DataField="OrderDate" UniqueName="OrderDate" DataFormatString="{0:D}">
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn SortExpression="Freight" HeaderText="Freight" HeaderButtonType="TextButton"
                    DataField="Freight" UniqueName="Freight">
                </telerik:GridBoundColumn>
            </Columns>
        </MasterTableView>
        <ClientSettings AllowExpandCollapse="true">
        </ClientSettings>
    </telerik:RadGrid>
</telerik:RadAjaxPanel>

VB:
Protected Sub RadGrid1_NeedDataSource(source As Object, e As Telerik.Web.UI.GridNeedDataSourceEventArgs)
    If Not e.IsFromDetailTable Then
        RadGrid1.DataSource = GetDataTable("SELECT * FROM Orders")
    End If
End Sub
Protected Sub RadGrid1_DetailTableDataBind(source As Object, e As Telerik.Web.UI.GridDetailTableDataBindEventArgs)
    Dim dataItem As GridDataItem = DirectCast(e.DetailTableView.ParentItem, GridDataItem)
    Select Case e.DetailTableView.Name
        Case "Orders"
            If True Then
                Dim OrderID As String = dataItem.GetDataKeyValue("OrderID").ToString()
                e.DetailTableView.DataSource = GetDataTable((Convert.ToString("SELECT * FROM [Order Details] WHERE OrderID = '") & OrderID) + "'")
                Exit Select
            End If
    End Select
End Sub
 
Public Function GetDataTable(query As String) As DataTable
    Dim ConnString As [String] = ConfigurationManager.ConnectionStrings("Northwind_newConnectionString3").ConnectionString
    Dim conn As New SqlConnection(ConnString)
    Dim adapter As New SqlDataAdapter()
    adapter.SelectCommand = New SqlCommand(query, conn)
 
    Dim myDataTable As New DataTable()
 
    conn.Open()
    Try
        adapter.Fill(myDataTable)
    Finally
        conn.Close()
    End Try
 
    Return myDataTable
End Function
Protected Sub RadGrid1_ItemCommand(sender As Object, e As GridCommandEventArgs)
    If e.CommandName = "ExportToExcel" Then
        For Each item As GridItem In RadGrid1.MasterTableView.Items
            item.Expanded = True
        Next
    End If
End Sub

JS:
<script type="text/javascript">
    function onRequestStart(sender, args) {
        if (args.get_eventTarget().indexOf("btnExport") >= 0) {
            args.set_enableAjax(false);
        }
    }
</script>

Thanks,
Princy
0
Kevin
Top achievements
Rank 1
answered on 07 Jan 2014, 05:47 PM
Hi Princy,

Calling no joy on this one, I put inot the code things I thought where missing from your side but it still does not expand the grid on export.  When I do this no expansion of the grid happens.

<asp:Panel ID="pnlGrid" runat="server" CssClass="CenterGrids">
               <telerik:RadGrid ID="myRadGrid" runat="server" Width="70%" Skin="Web20" AllowSorting="true" CssClass="CenterGrids">
                   <ExportSettings ExportOnlyData="true"  IgnorePaging="true" OpenInNewWindow="true"></ExportSettings>
                   <MasterTableView AutoGenerateColumns="false" Font-Size="10" CommandItemDisplay="Top" DataKeyNames="intLocationId" ExpandCollapseColumn-ButtonType="ImageButton" HierarchyLoadMode="Client"
                    ExpandCollapseColumn-CollapseImageUrl="~/Images/30.png" ExpandCollapseColumn-ExpandImageUrl="~/Images/29.png">
                       <CommandItemStyle HorizontalAlign="Right" Height="30px" />
                       <CommandItemTemplate>
                           <asp:Button ID="btnExport" runat="server" CommandName="ExportToExcel" Text="Export Excel" />
                       </CommandItemTemplate>
                       <HeaderStyle Font-Bold="true" HorizontalAlign="Center" />
                       <ItemStyle HorizontalAlign="Center" />
                       <AlternatingItemStyle BackColor="#B0C4DE"  HorizontalAlign="Center" />
                           <ParentTableRelation>
                               <telerik:GridRelationFields DetailKeyField="intLocationId" MasterKeyField="intLocationId" />
                           </ParentTableRelation>
                           <DetailTables>
                               <telerik:GridTableView Name="myManufacGrid" Width="50%" runat="server" DataKeyNames="intLocationId" TableLayout="Fixed" Font-Size="10" AutoGenerateColumns="False" HeaderStyle-HorizontalAlign="Center" >
                                    <HeaderStyle Font-Bold="true" HorizontalAlign="Center" />
                                    <AlternatingItemStyle BackColor="#B0C4DE"  HorizontalAlign="Center" />
                                    <ItemStyle HorizontalAlign="Center" />
                                   <Columns>
                                       <telerik:GridBoundColumn DataField="Name" HeaderText="NAME"  />
                                       <telerik:GridBoundColumn DataField="dtsigned" HeaderText="SIGNED"  />
                                   </Columns>
                               </telerik:GridTableView>
                           </DetailTables>
                           <Columns>
                               <telerik:GridBoundColumn DataField="strlocationId" HeaderText="LOC ID" />
                               <telerik:GridBoundColumn DataField="strLocation" HeaderText="LOCATION" />
                               <telerik:GridBoundColumn DataField="Name" HeaderText="NAME"  />
                               <telerik:GridBoundColumn DataField="dtsigned" HeaderText="LAST SIGNED"  />
                           </Columns>
                   </MasterTableView>
                   <ClientSettings AllowExpandCollapse="true"></ClientSettings>
               </telerik:RadGrid>
           </asp:Panel>
 
 
Protected Sub myRadGrid_ItemCommand(sender As Object, e As GridCommandEventArgs) Handles myRadGrid.ItemCommand
       If e.CommandName = "ExportToExcel" Then
           For Each item As GridItem In myRadGrid.MasterTableView.Items
               item.Expanded = True
           Next
           isExport = True
       End If
   End Sub
 
   Protected Sub myRadGrid_DetailTableDataBind(sender As Object, e As Telerik.Web.UI.GridDetailTableDataBindEventArgs) Handles myRadGrid.DetailTableDataBind
       sql = "Select ah.intLocationId, ah.dtsigned, ah.strSignature, mn.strFullname + ' ' + strRank Name from tblAnnualHRHist ah INNER JOIN MNNGPersonnel..tblMNNatPersonnel mn on mn.intPersonnelId = ah.intIssuedTo  " _
           & "where intLocationId = " & e.DetailTableView.ParentItem.GetDataKeyValue("intLocationId") & "order by dtSigned"
 
       e.DetailTableView.DataSource = getData(sql)
   End Sub
 
   Protected Sub myRadGrid_NeedDataSource(sender As Object, e As Telerik.Web.UI.GridNeedDataSourceEventArgs) Handles myRadGrid.NeedDataSource
       sql = "Select intLocationId, strLocationId, strLocation, Name, dtSigned from vw_LastSigned"
 
       myRadGrid.DataSource = getData(sql)
   End Sub
 
   Protected Sub myRadGrid_ItemCreated(sender As Object, e As GridItemEventArgs) Handles myRadGrid.ItemCreated
       If Not isExport Then
           If TypeOf e.Item Is GridCommandItem Then
               ScriptManager.GetCurrent(Page).RegisterPostBackControl(e.Item.FindControl("btnExport"))
           End If
       End If
   End Sub
0
Accepted
Princy
Top achievements
Rank 2
answered on 08 Jan 2014, 04:27 AM
Hi Kevin,

Your code works fine at my end. Please try setting the HierarchyDefaultExpanded property of the MasterTableView to true on Export as follows:

VB:
Protected Sub myRadGrid_ItemCommand(sender As Object, e As GridCommandEventArgs)
    If e.CommandName = "ExportToExcel" Then
        myRadGrid.MasterTableView.HierarchyDefaultExpanded = True
        isExport = True
    End If
End Sub

Thanks,
Princy
0
Kevin
Top achievements
Rank 1
answered on 08 Jan 2014, 01:34 PM
Hi Princy,
Ok that worked fine, thank you for the help.  Telerik Rocks.
Tags
Grid
Asked by
Kevin
Top achievements
Rank 1
Answers by
Princy
Top achievements
Rank 2
Kevin
Top achievements
Rank 1
Share this question
or