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

Accessing a RadGrid within a RadGrids ItemTemplate

18 Answers 320 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Chris Salas
Top achievements
Rank 1
Chris Salas asked on 26 Oct 2009, 09:41 PM

I am trying to export two different rad grids on one excel file.  I followed an example I found posed in the formums but am having issues acessing the radgrids that are inside of the itemtemplate of the RadGrid i want to export.  I have the following ASPX code:

 

<telerik:RadGrid ID="telerikBatchExportGrid" runat="server">  
                            <MasterTableView> 
                                <ItemTemplate> 
                                    <telerik:RadGrid ID="telerikTransBatchGrid" runat="server" AutoGenerateColumns="false" 
                                        AllowFilteringByColumn="true" AllowSorting="true" AllowPaging="true" Skin="BlueGrid" 
                                        EnableEmbeddedSkins="false" AllowMultiRowSelection="false" Width="570px" PagerStyle-AlwaysVisible="true" 
                                        ShowFooter="true" OnNeedDataSource="telerikTransBatchGrid_NeedDataSource" OnInit="telerikTransBatchGrid_Init">  
                                        <PagerStyle Mode="NextPrevAndNumeric" /> 
                                        <GroupingSettings CaseSensitive="False" /> 
                                        <MasterTableView Width="570px">  
                                            <Columns> 
                                                <telerik:GridBoundColumn DataField="TrackingNumber" HeaderText="Tracking #" UniqueName="TrackingNumber" /> 
                                                <telerik:GridBoundColumn DataField="IndividualName" HtmlEncode="false" HeaderText="Name" 
                                                    ItemStyle-HorizontalAlign="left" HeaderStyle-HorizontalAlign="center" /> 
                                                <telerik:GridBoundColumn DataField="EffectiveDate" HtmlEncode="false" HeaderText="Orig Date" 
                                                    ItemStyle-HorizontalAlign="left" HeaderStyle-HorizontalAlign="center" DataFormatString="{0:d}" 
                                                    FilterControlWidth="50px" /> 
                                                <telerik:GridBoundColumn DataField="Status" HtmlEncode="false" HeaderText="Status" 
                                                    UniqueName="Status" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="center">  
                                                    <FilterTemplate> 
                                                        <telerik:RadScriptBlock ID="RadScriptsBlockStatus" runat="server">  
 
                                                            <script type="text/javascript">  
                                                    function StatusSelectedIndexChanged2(sender, args) {  
                                                        var tableView = $find("<%# TryCast(Container, GridItem).OwnerTableView.ClientID %>");  
                                                        tableView.filter("Status", args.get_item().get_value(), "EqualTo");  
                                                    }  
                                                            </script> 
 
                                                        </telerik:RadScriptBlock> 
                                                        <telerik:RadComboBox ID="telerikDDLStatusFilter" SelectedValue='<%# TryCast(Container,GridItem).OwnerTableView.GetColumn("Status").CurrentFilterValue %>' 
                                                            runat="server" OnClientSelectedIndexChanged="StatusSelectedIndexChanged2" Width="85px">  
                                                            <Items> 
                                                                <telerik:RadComboBoxItem Text="All" Value="" /> 
                                                                <telerik:RadComboBoxItem Text="Pending" Value="Pending" /> 
                                                                <telerik:RadComboBoxItem Text="Sent" Value="Sent" /> 
                                                                <telerik:RadComboBoxItem Text="Funded" Value="Funded" /> 
                                                                <telerik:RadComboBoxItem Text="Failed" Value="Failed" /> 
                                                                <telerik:RadComboBoxItem Text="Approved" Value="Approved" /> 
                                                                <telerik:RadComboBoxItem Text="Refunded" Value="Refunded" /> 
                                                                <telerik:RadComboBoxItem Text="Reversal Requested" Value="Reversal Requested" /> 
                                                                <telerik:RadComboBoxItem Text="Reversal Complete" Value="Reversal Complete" /> 
                                                            </Items> 
                                                        </telerik:RadComboBox> 
                                                    </FilterTemplate> 
                                                </telerik:GridBoundColumn> 
                                                <telerik:GridBoundColumn DataField="Amount" HtmlEncode="false" HeaderText="Amount" 
                                                    UniqueName="Amount" ItemStyle-HorizontalAlign="right" HeaderStyle-HorizontalAlign="center" 
                                                    DataFormatString="{0:C}" Aggregate="sum" FooterStyle-HorizontalAlign="right" 
                                                    FilterControlWidth="50px" FooterStyle-Font-Bold="true">  
                                                </telerik:GridBoundColumn> 
                                            </Columns> 
                                        </MasterTableView> 
                                    </telerik:RadGrid> 
                                    <br /> 
                                    <h3> 
                                        Client Transactions</h3> 
                                    <telerik:RadGrid ID="telerikClientTransBatchGrid" runat="server" AutoGenerateColumns="false" 
                                        AllowFilteringByColumn="true" AllowSorting="true" AllowPaging="true" Skin="BlueGrid" 
                                        EnableEmbeddedSkins="false" AllowMultiRowSelection="false" Width="570px" PagerStyle-AlwaysVisible="true" 
                                        ShowFooter="true" OnNeedDataSource="telerikClientTransBatchGrid_NeedDataSource" OnInit="telerikClientTransBatchGrid_Init">  
                                        <PagerStyle Mode="NextPrevAndNumeric" /> 
                                        <GroupingSettings CaseSensitive="False" /> 
                                        <MasterTableView Width="570px">  
                                            <Columns> 
                                                <telerik:GridBoundColumn DataField="TrackingNumber" HeaderText="Tracking #" UniqueName="TrackingNumber">  
                                                </telerik:GridBoundColumn> 
                                                <telerik:GridBoundColumn DataField="IndividualName" HtmlEncode="false" HeaderText="Name" 
                                                    ItemStyle-HorizontalAlign="left" HeaderStyle-HorizontalAlign="center" /> 
                                                <telerik:GridBoundColumn DataField="LogDate" HtmlEncode="false" HeaderText="Orig Date" 
                                                    ItemStyle-HorizontalAlign="left" HeaderStyle-HorizontalAlign="center" DataFormatString="{0:d}" 
                                                    FilterControlWidth="50px" /> 
                                                <telerik:GridBoundColumn DataField="Status" HtmlEncode="false" HeaderText="Status" 
                                                    UniqueName="Status" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="center">  
                                                    <FilterTemplate> 
                                                        <telerik:RadScriptBlock ID="RadScriptsBlockClientStatus" runat="server">  
 
                                                            <script type="text/javascript">  
                                                    function StatusSelectedIndexChanged3(sender, args) {  
                                                        var tableView = $find("<%# TryCast(Container, GridItem).OwnerTableView.ClientID %>");  
                                                        tableView.filter("Status", args.get_item().get_value(), "EqualTo");  
                                                    }  
                                                            </script> 
 
                                                        </telerik:RadScriptBlock> 
                                                        <telerik:RadComboBox ID="telerikDDLStatusFilter" SelectedValue='<%# TryCast(Container,GridItem).OwnerTableView.GetColumn("Status").CurrentFilterValue %>' 
                                                            runat="server" OnClientSelectedIndexChanged="StatusSelectedIndexChanged3" Width="85px">  
                                                            <Items> 
                                                                <telerik:RadComboBoxItem Text="All" Value="" /> 
                                                                <telerik:RadComboBoxItem Text="Pending" Value="Pending" /> 
                                                                <telerik:RadComboBoxItem Text="Sent" Value="Sent" /> 
                                                                <telerik:RadComboBoxItem Text="Funded" Value="Funded" /> 
                                                                <telerik:RadComboBoxItem Text="Failed" Value="Failed" /> 
                                                            </Items> 
                                                        </telerik:RadComboBox> 
                                                    </FilterTemplate> 
                                                </telerik:GridBoundColumn> 
                                                <telerik:GridBoundColumn DataField="Amount" HtmlEncode="false" HeaderText="Amount" 
                                                    UniqueName="Amount" ItemStyle-HorizontalAlign="right" HeaderStyle-HorizontalAlign="center" 
                                                    DataFormatString="{0:C}" Aggregate="sum" FooterStyle-HorizontalAlign="right" 
                                                    FilterControlWidth="50px" FooterStyle-Font-Bold="true">  
                                                </telerik:GridBoundColumn> 
                                            </Columns> 
                                        </MasterTableView> 
                                    </telerik:RadGrid> 
                                </ItemTemplate> 
                            </MasterTableView> 
                        </telerik:RadGrid>\  
 
 

 

How do I access the internal RadGrids? I have tried the following with no sucess

CType(Me.telerikBatchExportGrid.MasterTableView.FindControl("telerikTransBatchGrid"), Telerik.Web.UI.RadGrid)  
CType(Me.telerikBatchExportGrid.MasterTableView.Items(0).FindControl("telerikTransBatchGrid"), Telerik.Web.UI.RadGrid)  
 
 

 

 

 

 

 

18 Answers, 1 is accepted

Sort by
0
Princy
Top achievements
Rank 2
answered on 27 Oct 2009, 10:15 AM
Hello Chris,

Since your main grid(telerikBatchExportGrid) is not bound to a source, the items are not created. Hence, you will not be able to access the nested controls. Try accessing the nested grids after binding your grid to a table as shown below:

c#:
protected void telerikBatchExportGrid_NeedDataSource(object source, GridNeedDataSourceEventArgs e) 
    { 
        DataTable table = new DataTable(); 
        table.Columns.Add("Column"); 
        table.Rows.Add(""); 
        telerikBatchExportGrid.DataSource = table; 
    } 

Hope this makes sense.
Princy.
0
Chris Salas
Top achievements
Rank 1
answered on 27 Oct 2009, 01:31 PM
Princy,

That worked perfectly.  Thanks for a quick response.

Chris
0
Abdul
Top achievements
Rank 1
answered on 02 Mar 2010, 05:48 PM
Hi,
   how can i clear the rad grid items and set the rad grid to its initial state.
0
Princy
Top achievements
Rank 2
answered on 03 Mar 2010, 06:19 AM
Hi,

In order to clear all the items from the grid ,you can set the datasource of the RadGrid to an empty object  array as shown below:

C#
RadGrid1.DataSource = new object[] { }; 

Princy.
0
Margret
Top achievements
Rank 1
answered on 25 Mar 2013, 10:08 AM
Hi,
I am having a grid(radgridchild) inside item template of another grid(radgridparent).How can i set the visible property of radgridchild in the pageload event?
0
Princy
Top achievements
Rank 2
answered on 25 Mar 2013, 10:37 AM
Hi,

Try the following code.
C#:
protected void RadGrid1_PreRender(object sender, EventArgs e)
{  
        foreach (GridDataItem item in RadGrid1.Items)
        {
            RadGrid grid = (RadGrid)item.FindControl("RadGrid2");
            grid.Visible = false;
       }
}

Thanks,
Princy
0
Margret
Top achievements
Rank 1
answered on 25 Mar 2013, 11:11 AM
Thanks for a  quick response.
I have an another doubt with same condition.I have 3 tabs. And I have 3 grids inside a item template of another grid.
Based on the tab selected, I have to bind the dataset values for each grid respectively.How can i do this?
0
Princy
Top achievements
Rank 2
answered on 26 Mar 2013, 07:07 AM
Hi,

Try the following code.
C#:
protected void RadTabStrip1_TabClick(object sender, RadTabStripEventArgs e)
    {
        RadTabStrip tab = (RadTabStrip)sender;
         foreach (GridDataItem item in RadGrid1.Items)
        {
            if (tab.SelectedTab.Text == "tab1")
            {
                RadGrid grid = (RadGrid)item.FindControl("RadGrid2");
               //populate grid here
            }
           else if (tab.SelectedTab.Text == "tab2")
            {
                RadGrid grid = (RadGrid)item.FindControl("RadGrid3");
                  //populate grid here
            }
        }
     }

Thanks,
Princy
0
Margret
Top achievements
Rank 1
answered on 27 Mar 2013, 07:31 AM
Hi,
I have tried the exporting to excel for multiple grids.I have an combo box having values of Radgrid1,Radgrid2,Radgrid3,All grids.I have wrapped them in radgrid named Radwrapper.I f i choose radgrid1  or radgrid 3 it is exporting correctly.If i choose Allgrids means, it says "Object reference not set to an instance of an object" error.What wiil be the issue?
Thanks
Margret
0
Princy
Top achievements
Rank 2
answered on 27 Mar 2013, 08:03 AM
Hi,

Try the approach mentioned in the following code library.
Export multiple RadGrids in single PDF/Excel file

Thanks,
Princy
0
Margret
Top achievements
Rank 1
answered on 27 Mar 2013, 10:01 AM
Hi,
I have used the example as you told above.while exporting multigrids values ,if i choose allgrids in combo box,the excel contains data.I have set true for ignore paging.But the paging is not ignored for each grid values.what will be the reason for this?
Thanks
Margret.
0
Margret
Top achievements
Rank 1
answered on 27 Mar 2013, 01:25 PM
Is there any update for this ?
0
Andrey
Telerik team
answered on 28 Mar 2013, 09:07 AM
Hi,

Are you calling the Rebind() method after you set the IgnorePaging attribute? If you are dynamically changing the IgnorePaging attribute you will need to call the Rebind() method in order for the changes to take effect.

Regards,
Andrey
the Telerik team
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.
0
Margret
Top achievements
Rank 1
answered on 01 Apr 2013, 06:30 AM
Hi i have used the following code in button click event.After adding rebind() also, ignore paging is not worked in export to excel for multi grids.


 

 

 

 

 

protected void btn1_Click(object sender, EventArgs e)

{

 

RadGrid radGrid = RadComboBox1.SelectedItem.Text == "All RadGrids" ? RadGridWrapper : (RadGrid)RadGridWrapper.Items[0].FindControl(RadComboBox1.SelectedItem.Text);

radGrid.ExportSettings.FileName =

"Details1";

radGrid.ExportSettings.ExportOnlyData=

true;

 radGrid.ExportSettings.IgnorePaging = true;

 radGrid.ExportSettings.OpenInNewWindow = true;

radGrid.MasterTableView.ExportToExcel();

radGrid.Rebind();

}

 

 

Still i didnt have the data (in all pages) in excel sheet for multiple grids.Only the first page of data is exported for each grid.


0
Andrey
Telerik team
answered on 01 Apr 2013, 09:07 AM
Hi,

Try to move the Rebind() method call to be before the ExportToExcel method. Otherwise the changes will be applied after you export the file and they will not be applied in the exported file.

Greetings,
Andrey
the Telerik team
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.
0
Margret
Top achievements
Rank 1
answered on 01 Apr 2013, 10:31 AM
Hi, Thanks for your response.
I  called  the rebind() method before the export to excel function.But still the other page values are not exported.If it is exporting grid1 only, it is working fine.But for multigrids it is exporting only first pages of the grids.
What will be the reason?
0
Margret
Top achievements
Rank 1
answered on 02 Apr 2013, 09:41 AM
Hi, any update on this?
0
Andrey
Telerik team
answered on 04 Apr 2013, 06:18 AM
Hi,

There should be no problem with the approach. The problem might come if you call the Rebind method before the IgnorePaging attribute is set to true. Your code should look as follows:

protected void btn1_Click(object sender, EventArgs e)
{
    RadGrid radGrid = RadComboBox1.SelectedItem.Text == "All RadGrids" ? RadGridWrapper : (RadGrid)RadGridWrapper.Items[0].FindControl(RadComboBox1.SelectedItem.Text);
    radGrid.ExportSettings.FileName ="Details1";
    radGrid.ExportSettings.ExportOnlyData=  true;
    radGrid.ExportSettings.IgnorePaging = true;
    radGrid.ExportSettings.OpenInNewWindow = true;
    radGrid.Rebind();
    radGrid.MasterTableView.ExportToExcel();
}

If this does not help, please open a formal support ticket and attach a sample project that replicates the issue.

Regards,
Andrey
the Telerik team
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.
Tags
Grid
Asked by
Chris Salas
Top achievements
Rank 1
Answers by
Princy
Top achievements
Rank 2
Chris Salas
Top achievements
Rank 1
Abdul
Top achievements
Rank 1
Margret
Top achievements
Rank 1
Andrey
Telerik team
Share this question
or