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

How do I implement Export to excel functionality with user controls (ascx pages) and nested ASP.Net Ajax RadGrid

1 Answer 150 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Rajesh
Top achievements
Rank 1
Rajesh asked on 03 Aug 2011, 02:11 AM
Hi,

I am trying to implement "Export to Excel" functionality in a ASP.Net Ajax nested grid. The grid is a user control which displays the results.

I have used the RadAjaxManager on my main page (where the grid user control is displayed) and RadAjaxManagerProxy on the user control.
<%@ Page Title="" Language="C#" MasterPageFile="~/UserAccess.Master" AutoEventWireup="true"
    CodeBehind="QuoteAndPolicy.aspx.cs" Inherits="PASCore.UserAccess.QuoteAndPolicy" %>
  
<%@ Register Src="CustomControls/SearchPanel.ascx" TagName="SearchPanel" TagPrefix="search" %>
<%@ Register Src="CustomControls/QuoteAndPolicyGrid.ascx" TagName="QuoteAndPolicyGrid" TagPrefix="search" %>
  
<%-- Title of the web page  --%>
<asp:content id="Title" contentplaceholderid="PageTitlePlaceHolder" runat="server">
User Access - Quote/ Policy
</asp:content>
<%-- Main Search Panel --%>
<asp:content ContentPlaceHolderID="mainContentPlaceHolder" runat="server">   
    <telerik:RadAjaxManager ID="radAjaxManager" runat="server"/>
    <script type="text/javascript" src="Scripts/QuoteAndPolicy.js"></script
  
    <asp:table id="searchPanelTable" runat="server">
        <asp:tablerow runat="server">
            <asp:tablecell runat="server">
                <search:SearchPanel ID="SearchPanel" runat="server" />
            </asp:tablecell>
        </asp:tablerow>
    </asp:table>
    <asp:table id="searchResultsTable" runat="server">
        <asp:tablerow runat="server">
            <asp:tablecell runat="server">
                <search:QuoteAndPolicyGrid ID="QuoteAndPolicyGrid" runat="server" />
            </asp:tablecell>
        </asp:tablerow>
    </asp:table>
</asp:content>

User Control html code:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="QuoteAndPolicyGrid.ascx.cs"
    Inherits="PASCore.UserAccess.Controls.QuoteAndPolicyGrid" %>
<%@ Register Src="QuoteAndPolicyActions.ascx" TagName="QuoteAndpolicyActions" TagPrefix="Action" %>
<style type="text/css">
    .viewWrap
    {
        color: #819598;
        font-weight: bold;
        font-size: 16px;
        padding-top: 5px;
        padding-left: 15px;
        padding-bottom: 10px;
        padding-right: 5px;
    }
      
      
    .AjaxLoadingPanel
    {
        background: #fff url(Content/Images/loading.gif) center center no-repeat;
    }
      
    .RadGridPager
    {
        height: 51px;
        padding-left: 5px;
        background-color: white;
        vertical-align: bottom;
        color: #b79ea9;
        font-weight: bold;
    }
      
    .RadGridItemStyle
    {
        border-right: solid 1px gray !important;
    }
</style>
<telerik:RadAjaxManagerProxy ID="RadAjaxManagerProxy" runat="server">
    <AjaxSettings>
        <telerik:AjaxSetting AjaxControlID="gridResults">
            <UpdatedControls>
                <telerik:AjaxUpdatedControl ControlID="gridResults" LoadingPanelID="radAjaxLoadingPanel" />
            </UpdatedControls>
        </telerik:AjaxSetting>
    </AjaxSettings>
</telerik:RadAjaxManagerProxy>
  
  
<telerik:RadAjaxLoadingPanel ID="radAjaxLoadingPanel" runat="server" Transparency="25" CssClass="AjaxLoadingPanel" />
<telerik:RadGrid ID="gridResults" runat="server" CellSpacing="0" GridLines="Both"
    AllowPaging="True" PageSize="20" ShowGroupPanel="True" OnItemCommand="GridResult_ItemCommand"
    OnNeedDataSource="MainGrid_NeedDataSource" BorderStyle="Solid" GroupingEnabled="true"
    AutoGenerateColumns="false" AllowSorting="true" Width="100%">
    <ClientSettings AllowColumnsReorder="false" ReorderColumnsOnClient="true" AllowAutoScrollOnDragDrop="True">
        <Resizing AllowRowResize="True" EnableRealTimeResize="True" ResizeGridOnColumnResize="True"
            AllowColumnResize="True"></Resizing>
    </ClientSettings>
    <PagerStyle CssClass="RadGridPager" Mode="NextPrevNumericAndAdvanced"></PagerStyle>
    <SortingSettings></SortingSettings>
    <ExportSettings HideStructureColumns="true" />
    <MasterTableView AllowMultiColumnSorting="True" EditMode="PopUp" CommandItemDisplay="Top">
        <NestedViewTemplate>
            <asp:panel runat="server" id="InnerContainer" cssclass="viewWrap" visible="false">
                <telerik:RadTabStrip runat="server" ID="TabStrip" MultiPageID="Multipage" SelectedIndex="0">
                    <tabs>
                  <telerik:RadTab runat="server" Text="Additional Info" PageViewID="additionalInfoView">
                  </telerik:RadTab>
                  <telerik:RadTab runat="server" Text="Coverage Details" PageViewID="coverageDetailsView">
                  </telerik:RadTab>
                </tabs>
                </telerik:RadTabStrip>
                <telerik:RadMultiPage runat="server" ID="multipage" SelectedIndex="0" RenderSelectedPageOnly="false">
                    <telerik:RadPageView runat="server" ID="additionalInfoView">
                        <telerik:RadGrid ID="additionalInfoGrid" runat="server" CellSpacing="0" GridLines="Both"
                            AllowPaging="True" PageSize="5" ShowGroupPanel="true" OnNeedDataSource="AdditionalInfoGrid_NeedDataSource"
                            Width="60%">
                            <clientsettings allowcolumnsreorder="false" reordercolumnsonclient="true">
                          <Resizing AllowRowResize="True" EnableRealTimeResize="True" ResizeGridOnColumnResize="True" AllowColumnResize="True"></Resizing>
                      </clientsettings>
                            <mastertableview showheader="true" autogeneratecolumns="False" allowpaging="true"
                                pagesize="7" hierarchyloadmode="ServerOnDemand">
                        <Columns>
                            <telerik:GridBoundColumn
                                HeaderText="Customer Number" UniqueName="CustomerNumber" 
                                DataField="CustomerNumber" ItemStyle-CssClass="RadGridItemStyle" HeaderStyle-CssClass="RadGridItemStyle" Visible ="false">
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn
                                HeaderText="Date of Birth" UniqueName="DateOfBirth" 
                                DataField="DateOfBirth" ItemStyle-CssClass="RadGridItemStyle" HeaderStyle-CssClass="RadGridItemStyle" Visible ="false">
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn 
                                HeaderText="Agency" UniqueName="Agency"
                                DataField="Agency" ItemStyle-CssClass="RadGridItemStyle" HeaderStyle-CssClass="RadGridItemStyle" Visible ="false">
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn
                                HeaderText="Producer Code" UniqueName="ProducerCode" 
                                DataField="ProducerCode" ItemStyle-CssClass="RadGridItemStyle" HeaderStyle-CssClass="RadGridItemStyle" Visible ="false">
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn 
                                HeaderText="Last Modified" UniqueName="LastModified" 
                                DataField="LastModified" ItemStyle-CssClass="RadGridItemStyle" HeaderStyle-CssClass="RadGridItemStyle" Visible ="false">
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn 
                                HeaderText="Comment" UniqueName="Comment" DataField="Comment" ItemStyle-CssClass="RadGridItemStyle" HeaderStyle-CssClass="RadGridItemStyle" Visible ="false">
                            </telerik:GridBoundColumn>
                        </Columns>
                     </mastertableview>
                        </telerik:RadGrid>
                    </telerik:RadPageView>
                    <telerik:RadPageView runat="server" ID="coverageDetailsView">
                        <telerik:RadGrid ID="coverageDetailsGrid" runat="server" CellSpacing="0" GridLines="Both"
                            AllowPaging="True" PageSize="5" ShowGroupPanel="true" OnNeedDataSource="CoverageDetailsGrid_NeedDataSource"
                            Width="60%">
                            <clientsettings allowcolumnsreorder="false" reordercolumnsonclient="true">
                         <Resizing AllowRowResize="True" EnableRealTimeResize="True" ResizeGridOnColumnResize="True" AllowColumnResize="True"></Resizing>
                     </clientsettings>
                            <mastertableview showheader="true" autogeneratecolumns="False" allowpaging="true"
                                pagesize="7" hierarchyloadmode="ServerOnDemand">
                        <Columns>
                            <telerik:GridBoundColumn DataField="NumberOfDrivers" 
                                HeaderText="Drivers" 
                                UniqueName="NumberOfDrivers" ItemStyle-CssClass="RadGridItemStyle" HeaderStyle-CssClass="RadGridItemStyle" Visible ="false">
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn DataField="NumberOfVehicles" 
                                HeaderText="Vehicles" 
                                UniqueName="NumberOfVehicles" ItemStyle-CssClass="RadGridItemStyle" HeaderStyle-CssClass="RadGridItemStyle" Visible ="false">
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn DataField="CompCollisionDeductible" 
                                HeaderText="Comp/Collsion Deductibles" UniqueName="CompCollisionDeductible" ItemStyle-CssClass="RadGridItemStyle" HeaderStyle-CssClass="RadGridItemStyle" Visible ="false">
                            </telerik:GridBoundColumn>
                                <telerik:GridBoundColumn DataField="LiabilityLimit" 
                                HeaderText="Policy Limits" UniqueName="LiabilityLimit" ItemStyle-CssClass="RadGridItemStyle" HeaderStyle-CssClass="RadGridItemStyle" Visible ="false">
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn DataField="CurrentPremium" 
                                HeaderText="Lines of Business/Premium" UniqueName="CurrentPremium" ItemStyle-CssClass="RadGridItemStyle" HeaderStyle-CssClass="RadGridItemStyle" Visible ="false">
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn DataField="RenewalPremium" 
                                HeaderText="Renewal Premium per LOB" UniqueName="RenewalPremium" ItemStyle-CssClass="RadGridItemStyle" HeaderStyle-CssClass="RadGridItemStyle" Visible ="false">
                            </telerik:GridBoundColumn>
                        </Columns>
                    </mastertableview>
                        </telerik:RadGrid>
                    </telerik:RadPageView>
                </telerik:RadMultiPage>
            </asp:panel>
        </NestedViewTemplate>
        <RowIndicatorColumn Visible="True">
        </RowIndicatorColumn>
        <ExpandCollapseColumn Visible="True">
        </ExpandCollapseColumn>
        <Columns>
            <telerik:GridBoundColumn HeaderText="Quote Number" UniqueName="ContractId" DataField="ContractId"
                ItemStyle-CssClass="RadGridItemStyle" HeaderStyle-CssClass="RadGridItemStyle"
                SortExpression="ContractId" Visible= false>
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn HeaderText="Quote Number" UniqueName="ContractNumber" DataField="ContractNumber"
                ItemStyle-CssClass="RadGridItemStyle" HeaderStyle-CssClass="RadGridItemStyle"
                SortExpression="ContractNumber">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn HeaderText="Insured" UniqueName="Insured" DataField="Insured"
                ItemStyle-CssClass="RadGridItemStyle" HeaderStyle-CssClass="RadGridItemStyle"
                SortExpression="Insured">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn HeaderText="Street Address" UniqueName="Address" DataField="Address"
                ItemStyle-CssClass="RadGridItemStyle" HeaderStyle-CssClass="RadGridItemStyle"
                SortExpression="Address">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn HeaderText="Risk State" UniqueName="RiskState" DataField="RiskState"
                ItemStyle-CssClass="RadGridItemStyle" HeaderStyle-CssClass="RadGridItemStyle"
                SortExpression="RiskState">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn HeaderText="Line Of Business" UniqueName="LineOfBusiness"
                DataField="LineOfBusiness" ItemStyle-CssClass="RadGridItemStyle" HeaderStyle-CssClass="RadGridItemStyle"
                SortExpression="LineOfBusiness">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn HeaderText="Product" UniqueName="MarketSegment" DataField="MarketSegment"
                ItemStyle-CssClass="RadGridItemStyle" HeaderStyle-CssClass="RadGridItemStyle"
                SortExpression="MarketSegment">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn HeaderText="Eff - Exp Dates" UniqueName="EffExpDates" DataField="EffExpDate"
                ItemStyle-CssClass="RadGridItemStyle" HeaderStyle-CssClass="RadGridItemStyle"
                SortExpression="EffExpDates">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn HeaderText="Status" UniqueName="Status" DataField="Status"
                ItemStyle-CssClass="RadGridItemStyle" HeaderStyle-CssClass="RadGridItemStyle"
                SortExpression="Status">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn HeaderText="Agency" UniqueName="Agency" DataField="Agency"
                ItemStyle-CssClass="RadGridItemStyle" HeaderStyle-CssClass="RadGridItemStyle"
                SortExpression="Agency">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn HeaderText="Premium" UniqueName="Premium" DataField="Premium"
                ItemStyle-CssClass="RadGridItemStyle" HeaderStyle-CssClass="RadGridItemStyle"
                SortExpression="Premium">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn HeaderText="Renewal Premium" UniqueName="RenewalPremium" DataField="RenewalPremium"
                ItemStyle-CssClass="RadGridItemStyle" HeaderStyle-CssClass="RadGridItemStyle"
                SortExpression="RenewalPremium" visible="false">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn HeaderText="Premium Difference ($)" UniqueName="TermPremiumChangeDifference" DataField="TermPremiumChangeDifference"
                ItemStyle-CssClass="RadGridItemStyle" HeaderStyle-CssClass="RadGridItemStyle"
                SortExpression="TermPremiumChangeDifference" visible="false">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn HeaderText="Premium Difference (%)" UniqueName="TermPremiumChangePercentage" DataField="TermPremiumChangePercentage"
                ItemStyle-CssClass="RadGridItemStyle" HeaderStyle-CssClass="RadGridItemStyle"
                SortExpression="TermPremiumChangePercentage" visible="false">
            </telerik:GridBoundColumn>
            <telerik:GridEditCommandColumn UniqueName="actionsCommandColumn" EditText="Go" ButtonType="PushButton">
            </telerik:GridEditCommandColumn>
        </Columns>
        <EditFormSettings PopUpSettings-Modal="true" InsertCaption="Actions" EditFormType="Template">
            <FormTemplate>
                <Action:QuoteAndpolicyActions ID="quoteAndPolicyActions" runat="server" />
            </FormTemplate>
        </EditFormSettings>
    </MasterTableView>
    <ClientSettings>
        <ClientEvents OnPopUpShowing="PopUpShowing" />
    </ClientSettings>
    <HeaderStyle BorderStyle="Solid" />
    <FilterMenu EnableImageSprites="False">
    </FilterMenu>
    <HeaderContextMenu CssClass="GridContextMenu GridContextMenu_Default">
    </HeaderContextMenu>
</telerik:RadGrid>

User Control code behind (.cs): In the nested grid, master grid data gets binded when the page loads. Nested grid data gets binded only when user tries to expand the data for a particular row in the mater grid.
/// <summary>
        /// This event is called to populate data on the MainGrid of the page.
        /// </summary>
        /// <param name="source"></param>
        /// <param name="e"></param>
        protected void MainGrid_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
          
        {
            if (ContractSearchResponse == null) return;
  
            contracts = ContractSearchResponse.Contracts;
          
            var columnsDataQuery = (from contract in contracts
                                    orderby String.Concat(contract.InsuredFirstName, string.Empty, String.Empty, contract.InsuredLastName), 
                                            String.Concat(contract.AddressLine1, ", ", contract.AddressCityName, ", ", contract.AddressCityCode, ", ", contract.AddressStateCode)
                                    ascending
                                    select new
                                    {   
                                        Insured = String.Format("{0} {1}", contract.InsuredFirstName, contract.InsuredLastName),
                                        ContractId = contract.ContractId,
                                        ContractNumber = contract.ContractNumber,
                                        Address = string.Concat(contract.AddressLine1, ", ", contract.AddressCityName, ", ", contract.AddressCityCode, ", ", contract.AddressStateCode),
                                        MarketSegment = contract.MarketSegment,
                                        LineOfBusiness = contract.LineType,
                                        EffExpDates = contract.ContractExpDate,
                                        Status = contract.TransactionStatus.ToString(),
                                        RiskState = contract.RiskState,
                                        Premium = String.Format("${0}",contract.PreviousTermPremium.ToString()),
                                        RenewalPremium = String.Format("${0}", contract.RenewalTermPremium.ToString()),
                                        TermPremiumChangeDifference = String.Format("${0}", contract.TermPremiumChangeDifference.ToString()),
                                        TermPremiumChangePercentage = String.Format("{0}%",contract.TermPremiumChangePercentage.ToString())
                                    }).AsQueryable();
       
            ((RadGrid)source).DataSource = columnsDataQuery;
            if (DisplayFutureRenewal)
            {
                ((RadGrid)source).Columns.FindByUniqueName("RenewalPremium").Visible = true;
                ((RadGrid)source).Columns.FindByUniqueName("TermPremiumChangeDifference").Visible = true;
                ((RadGrid)source).Columns.FindByUniqueName("TermPremiumChangePercentage").Visible = true;
  
            }
        }
  
  
/// <summary>
        /// This event is called to populate data on the Additional Info sub-grid of the page.
        /// </summary>
        /// <param name="source"></param>
        /// <param name="e"></param>
        protected void AdditionalInfoGrid_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
        {       
                var contractService = isDebuggingEnabled == true ? ZhongsContractService() : ContractServiceFactory.GetContractService();
                      
                ContractDetailResponse contractDetailResponse = null;
                
                //Fetch the contract details information.
                contractDetailResponse = contractService.GetContractDetails(new ContractDetailRequest()
                    {
                        ContractId = contractId,
                        LineType = (lineOfBusiness.CompareTo("Personal Auto") == 0 ?
                            Resources.Enums.LineType.PersonalAuto :
                            Resources.Enums.LineType.PersonalMultiline)
                    }
                );
  
         
                if (contractDetailResponse != null)
                {
                    //Filter the contract details information for Details
                      var contractDetailResponsesQuery = (from contDetailResp in contractDetailResponse.Enumerated()
                                                            select new
                                                            {
                                                                CustomerNumber = contDetailResp.PersonalLine.CustomerNumber,
                                                                DateOfBirth = contDetailResp.PersonalLine.NamedInsuredDateOfBirth,
                                                                Agency = contDetailResp.PersonalLine.AgencyName,
                                                                ProducerCode = contDetailResp.PersonalLine.ProducerCode,
                                                                LastModified = contDetailResp.PersonalLine.LastModified,
                                                                Comment = contDetailResp.PersonalLine.Comment
  
                                                            }
                                                            ).AsQueryable();
  
  
                    ((RadGrid)source).Columns.FindByUniqueName("CustomerNumber").Visible = true;
                    ((RadGrid)source).Columns.FindByUniqueName("DateOfBirth").Visible = true;
                    ((RadGrid)source).Columns.FindByUniqueName("LastModified").Visible = true;
                    ((RadGrid)source).Columns.FindByUniqueName("Comment").Visible = true;
                    ((RadGrid)source).DataSource = contractDetailResponsesQuery;
  
  
  
                }
                     
            
        }
        /// <summary>
        /// This event is called to populate data on the Coverage Details sub-grid of the page.
        /// </summary>
        /// <param name="source"></param>
        /// <param name="e"></param>
        protected void CoverageDetailsGrid_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
        {
              
                var contractService = isDebuggingEnabled == true ? ZhongsContractService() : ContractServiceFactory.GetContractService();
               
                ContractDetailResponse contractDetailResponse = null;
            
                //Fetch the contract details information.
                contractDetailResponse = contractService.GetContractDetails(new ContractDetailRequest()
                    {
                        ContractId = contractId,
                        LineType = (lineOfBusiness.CompareTo("Personal Auto") == 0 ?
                            Resources.Enums.LineType.PersonalAuto :
                            Resources.Enums.LineType.PersonalMultiline)
                    }
                );
            
  
                if (contractDetailResponse != null && contractDetailResponse.AutoLOBContract != null)
                {
                    //Filter the contract details information for Coverage Summary information
                    var coverageDetailsQuery = (from contractDetailResp in contractDetailResponse.Enumerated()
                                                select new
                                                {   NumberOfDrivers = contractDetailResp.AutoLOBContract.DriverList.Count.ToString(),
                                                    NumberOfVehicles = contractDetailResp.AutoLOBContract.VehicleList.Count.ToString(),
                                                    CompCollisionDeductible = String.Format("${0}/${1}", string.Empty, string.Empty),
                                                    LiabilityLimit = String.Format("Liability Limit - ${0}", contractDetailResp.AutoLOBContract.CombinedSingleLimit)                              
                                                }).AsQueryable();
  
                    ((RadGrid)source).Columns.FindByUniqueName("NumberOfDrivers").Visible = true;
                    ((RadGrid)source).Columns.FindByUniqueName("NumberOfVehicles").Visible = true;
                    ((RadGrid)source).Columns.FindByUniqueName("CompCollisionDeductible").Visible = true;
                    ((RadGrid)source).Columns.FindByUniqueName("LiabilityLimit").Visible = true;
                    ((RadGrid)source).DataSource = coverageDetailsQuery;
                    return;
                }
  
  
              
                if (contractDetailResponse != null && contractDetailResponse.MultilineLOBContract != null)
                {
  
                    var lobCurrentTermPremiums = contractDetailResponse.MultilineLOBContract.LOBCurrentTermPremiums == null ? new List <LOBPremium>() :  contractDetailResponse.MultilineLOBContract.LOBCurrentTermPremiums;
                    var lobPriorTermPremiums = contractDetailResponse.MultilineLOBContract.LOBPriorTermPremiums == null ? new List<LOBPremium>() : contractDetailResponse.MultilineLOBContract.LOBPriorTermPremiums;
                  
                    var leftOuterJoin = from lctp in lobCurrentTermPremiums
                                        join lptp in lobPriorTermPremiums 
                                        on lctp.LineOfBusiness equals lptp.LineOfBusiness 
                                        into temp
                                        from lptp in temp.DefaultIfEmpty(new LOBPremium(){ LineOfBusiness = lctp.LineOfBusiness, Premium = null})
                                        select 
                                        new
                                        {
                                            LineOfBusiness = lctp.LineOfBusiness,
                                            CurrentPremium = lctp.Premium, 
                                            RenewalPremium = lptp.Premium
                                        };
  
                
                    var rightOuterJoin = from lptp in lobPriorTermPremiums
                                         join lctp in lobCurrentTermPremiums
                                         on lptp.LineOfBusiness equals lctp.LineOfBusiness
                                         into temp
                                         from lctp in temp.DefaultIfEmpty(new LOBPremium() { LineOfBusiness = lptp.LineOfBusiness, Premium = null })
                                         select
                                         new
                                         {
                                             LineOfBusiness = lptp.LineOfBusiness,
                                             CurrentPremium = lctp.Premium,
                                             RenewalPremium = lptp.Premium
                                         };
  
                    var fullOuterJoin = leftOuterJoin.Union(rightOuterJoin);
  
                    var groupedLinedOfBusiness = from lob in fullOuterJoin.OrderBy(lobPremium => lobPremium.LineOfBusiness)
                                                 group lob by lob.LineOfBusiness
                                                into grouped
                                                select new
                                                {
                                                    CurrentPremium = String.Format("{0} - ${1}", grouped.Key, grouped.Max(l => l.CurrentPremium).ToString()),
                                                    RenewalPremium = String.Format("{0} - ${1}", grouped.Key, grouped.Max(l => l.RenewalPremium).ToString())
                                                };
  
  
                    if (contractDetailResponse.MultilineLOBContract.LOBPriorTermPremiums != null && 
                        contractDetailResponse.MultilineLOBContract.LOBPriorTermPremiums.Count > 0)
                    {
                        ((RadGrid)source).Columns.FindByUniqueName("RenewalPremium").Visible = true;
                    }
  
                    if (contractDetailResponse.MultilineLOBContract.LOBCurrentTermPremiums != null &&
                       contractDetailResponse.MultilineLOBContract.LOBCurrentTermPremiums.Count > 0)
                    {
                        ((RadGrid)source).Columns.FindByUniqueName("CurrentPremium").Visible = true;
                    }
                    ((RadGrid)source).DataSource = groupedLinedOfBusiness.AsQueryable();
  
                    return;       
                }
        }
  
        /// <summary>
        /// This event is called when the user clicks on the item rows on the MainGrid.
        /// </summary>
        /// <param name="source"></param>
        /// <param name="e"></param>
        protected void GridResult_ItemCommand(object source, GridCommandEventArgs e)
        {
            if (e.CommandName == RadGrid.ExpandCollapseCommandName && e.Item is
                GridDataItem)
            {
                GridDataItem item = e.Item as GridDataItem;
    
                item.ChildItem.FindControl("InnerContainer").Visible = !e.Item.Expanded;
  
                contractId = item["ContractId"].Text;
  
                lineOfBusiness = item["LineOfBusiness"].Text;
            
                if (!item.Expanded)
                {
                    GridNestedViewItem nestedItem = (GridNestedViewItem)item.ChildItem;
                    RadGrid tempGrid = (RadGrid)nestedItem.FindControl("additionalInfoGrid");
                    tempGrid.Rebind();
  
                    tempGrid = (RadGrid)nestedItem.FindControl("coverageDetailsGrid");
  
                    tempGrid.Rebind();
  
                }
            }
        }

Questions: How do i register Client Events? I tried doing in Page_Load, but system threw an exception because it is not able to find getCurrent(this.page)
I want to export with "ExportOnlydata" = true and "IgnorePaging" = true, In doing so i get excpetion, which i think is because child grid data is not available (since it gets loaded only on Grid ItemCommand event).

I would really appreciate if you could look into my code and suggest me how to implement "Export to excel" functionality in this case.

Thanks,

-Rajesh

1 Answer, 1 is accepted

Sort by
0
Jayesh Goyani
Top achievements
Rank 2
answered on 03 Aug 2011, 10:08 AM
Hello Rajesh,

Please add Javascript in your main page and modify your RadAjaxManager Tag.

<script type="text/javascript">
        function onRequestStart(sender, args)
        {
            if (args.get_eventTarget().indexOf("ExportToExcelButton") >= 0 ||
                    args.get_eventTarget().indexOf("ExportToWordButton") >= 0 ||
                    args.get_eventTarget().indexOf("ExportToCsvButton") >= 0)
            {
                args.set_enableAjax(false);
            }
        }
    </script>
 
    <telerik:RadAjaxManager ID="radAjaxManager" runat="server">
        <ClientEvents OnRequestStart="onRequestStart" />
      
    </telerik:RadAjaxManager>

let me know if any concern.

Thanks,
Jayesh Goyani
Tags
Grid
Asked by
Rajesh
Top achievements
Rank 1
Answers by
Jayesh Goyani
Top achievements
Rank 2
Share this question
or