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

How to export RadGridView with RowDetailsTemplate?

3 Answers 344 Views
GridView
This is a migrated thread and some comments may be shown as answers.
This question is locked. New answers and comments are not allowed.
Patryk Kubiela
Top achievements
Rank 1
Patryk Kubiela asked on 13 Jul 2010, 11:49 AM

Hello!
I do not know how to use telerik export functioin (for export grid to format excel, html, csv or txt) in order to export also RowDetailsTemplate.
My code:

 

<telerikGridView:RadGridView x:Name="rdgPackPropositions" RowIndicatorVisibility="Collapsed" AutoGenerateColumns="False" ShowColumnHeaders="True" ShowGroupPanel="False" Grid.ColumnSpan="6" Margin="8,0,9,46" Grid.Row="1" Background="White"
                    <telerikGridView:RadGridView.Resources
                        <!---->
                    <DataTemplate x:Key="PropositionRowDetailTemplate"
                        <Grid d:DesignWidth="237" d:DesignHeight="143" Height="Auto" Width="514"
    
                            <telerikGridView:RadGridView x:Name="propositionSubGrid" Margin="220,0,8,8"  RowLoaded="propositionSubGrid_RowLoaded" RowIndicatorVisibility="Collapsed" ItemsSource="{Binding ListPropositionOrdersList}" Height="Auto" AutoGenerateColumns="False" ShowColumnHeaders="False" ShowGroupPanel="False"
                                <telerikGridView:RadGridView.Columns
                                    <telerikGridView:GridViewDataColumn Background="#2000AAAA" Header="Model" IsReadOnly="True" Width="Auto" DataMemberBinding="{Binding IdProductCode}" /> 
                                    <telerikGridView:GridViewDataColumn Background="#20FF00AA" Header="Zamówienie" IsReadOnly="True"  Width="Auto" DataMemberBinding="{Binding OrderId}" /> 
                            
                            
                                           <telerikGridView:GridViewDataColumn Header="Ilosc" Width="100"
                                <telerikGridView:GridViewDataColumn.CellTemplate
                                   <DataTemplate
                                <TextBlock Text="{Binding ProposalAmount}" ></TextBlock>                                                                             
                                    </DataTemplate
                            </telerikGridView:GridViewDataColumn.CellTemplate
                                          <telerikGridView:GridViewDataColumn.CellEditTemplate
                                            <DataTemplate
                                                 <inputToolkit:NumericUpDown  Minimum="1" Maximum="100" Value="{Binding ProposalAmount,Mode=TwoWay}" /> 
                                            </DataTemplate>   
                                          </telerikGridView:GridViewDataColumn.CellEditTemplate
                            </telerikGridView:GridViewDataColumn
    
                                      <telerikGridView:GridViewDataColumn
                                     <telerikGridView:GridViewDataColumn.CellTemplate
                                          <DataTemplate
                                              <Button Content="x" Tag="{Binding IdPropositionOrderList}" Click="Button_Click_2" Style="{StaticResource redMediaButton}"/> 
                                          </DataTemplate
                                     </telerikGridView:GridViewDataColumn.CellTemplate>                    
                       
                                    </telerikGridView:GridViewDataColumn
                         </telerikGridView:RadGridView.Columns
                            </telerikGridView:RadGridView
                        </Grid
                    </DataTemplate
                </telerikGridView:RadGridView.Resources
                <telerikGridView:RadGridView.RowStyle
                    <Style TargetType="Telerik_Windows_Controls_GridView:GridViewRow"
                        <Setter Property="Telerik_Windows_Controls_DragDrop:RadDragAndDropManager.AllowDrop" Value="True" /> 
                    </Style
                </telerikGridView:RadGridView.RowStyle
                <telerikGridView:RadGridView.RowDetailsTemplate
            <StaticResource ResourceKey="PropositionRowDetailTemplate"/> 
                </telerikGridView:RadGridView.RowDetailsTemplate
                    
                <telerikGridView:RadGridView.Columns
                    <telerikGridView:GridViewDataColumn Background="#2000AAAA" Header="X" DataMemberBinding="{Binding X}" /> 
                    <telerikGridView:GridViewDataColumn Background="#20FF00AA" Header="Y" DataMemberBinding="{Binding Y}" /> 
                    <telerikGridView:GridViewDataColumn Background="#2000AAAA" Header="Z" DataMemberBinding="{Binding Z}" /> 
                    <telerikGridView:GridViewDataColumn Background="#2000AAAA" Header="M" DataMemberBinding="{Binding Weight}" /> 
                    <telerikGridView:GridViewDataColumn Background="#20FF00AA" Header="Qa" DataMemberBinding="{Binding Amount}" /> 
                    <telerikGridView:GridViewDataColumn Background="#2000AAAA" Header="Model" DataMemberBinding="{Binding Model}" /> 
                    <telerikGridView:GridViewDataColumn Background="#2000AAAA" Header="Zamowienie" DataMemberBinding="{Binding OrderId}" /> 
            <telerikGridView:GridViewDataColumn
                <telerikGridView:GridViewDataColumn.CellTemplate
                    <DataTemplate
                        <Button Content="x" Tag="{Binding IdPackProposition}" Click="Button_Click_1" Style="{StaticResource redMediaButton}"/> 
                    </DataTemplate
                </telerikGridView:GridViewDataColumn.CellTemplate
                        
                        
            </telerikGridView:GridViewDataColumn
                <telerikGridView:GridViewToggleRowDetailsColumn /> 
                </telerikGridView:RadGridView.Columns
            </telerikGridView:RadGridView


...and my export function...

public static void ExportToExcelFile(this RadGridView grid)
        {
            string extension = "xls";
            string selectedItem = "Excel";
            ExportFormat format = ExportFormat.Html;
  
            SaveFileDialog dialog = new SaveFileDialog();
            dialog.DefaultExt = extension;
            dialog.Filter = String.Format("{1} files (*.{0})|*.{0}|All files (*.*)|*.*", extension, selectedItem);
            dialog.FilterIndex = 1;
  
            if (dialog.ShowDialog() == true)
            {
                using (Stream stream = dialog.OpenFile())
                {
                    GridViewExportOptions options = new GridViewExportOptions();
                    options.Format = format;
                    options.ShowColumnHeaders = true;
                    options.Encoding = Encoding.UTF8;
                    grid.Export(stream, options);
                }
            }
        }


I mean this   <DataTemplate x:Key="PropositionRowDetailTemplate">
in the middle.


Thanks for help!

Sincerely yours,
Patryk Kubiela.

3 Answers, 1 is accepted

Sort by
0
Vlad
Telerik team
answered on 13 Jul 2010, 11:53 AM
Hello,

 Have you tried the approach demonstrated in this demo?

Best wishes,
Vlad
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
0
Richard
Top achievements
Rank 1
answered on 24 Aug 2010, 08:57 PM
I've looked at the example, but there doesn't appear to be any template columns.  Also, the exported file opens in excel but seems to be just HTML.  This issue isn't a concern for me now, so we don't need to talk about this here.

I've included a sample of the XAML that I'm using.  The project is using MVVM, but if I need to break that for this to work, I'm fine with this.  Any help is appreciated. 


 

 

 

<telerik:RadGridView Name="radGridView" 
    ShowGroupPanel
="False" 
    IsReadOnly
="True" 
    
AutoGenerateColumns="False" 
    
ItemsSource="{Binding CallDetailCollection}" 
    HorizontalAlignment
="Stretch"
    IsFilteringAllowed="False" 
    RowIndicatorVisibility
="Collapsed" 
    Visibility
="{Binding NoData, Converter={StaticResource BoolToVisibilityConverter}, ConverterParameter=False}">

 

 

 

 

        <telerik:RadGridView.Columns>

 

 

 

 

            <telerik:GridViewDataColumn Header="BV AB#" 
                DataMemberBinding
="{Binding CallNumber}" 
                IsVisible
="False" >
            </
telerik:GridViewDataColumn>

 

 

 

 

            <telerik:GridViewDataColumn Header="Location" 
                CellTemplate
="{StaticResource ServiceCall_LocationTemplate
}" >
            </
telerik:GridViewDataColumn>

 

 

 

 

            <telerik:GridViewDataColumn Header="Machine #" 
                DataMemberBinding
="{Binding PointOfSaleID}">
            </
telerik:GridViewDataColumn>

 

 

 

 

        </telerik:RadGridView.Columns>

 

 

 

 

</telerik:RadGridView>

The bolded GridViewDataColumn above is a celltemplate, and the export doesn't work for this. The template is part of a dictionary static resource.  Any thoughts as to how I would go about making the export work?

Thanks!

 

0
Yavor Georgiev
Telerik team
answered on 25 Aug 2010, 04:42 PM
Hello Richard,

 Because you're using a templated column, there's no way for the RadGridView to know what it should export it like. You will have to handle the ElementExporting event and set the value of every cell from that column manually.

Sincerely yours,
Yavor Georgiev
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
Tags
GridView
Asked by
Patryk Kubiela
Top achievements
Rank 1
Answers by
Vlad
Telerik team
Richard
Top achievements
Rank 1
Yavor Georgiev
Telerik team
Share this question
or