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

RadGrid Invalid cast from 'Char' to 'Double'.

3 Answers 322 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Sean
Top achievements
Rank 1
Sean asked on 09 Dec 2015, 06:31 PM
I am exporting a RadGrid to Excel and I am receiving the following error:

Invalid cast from 'Char' to 'Double'.
 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
 
Exception Details: System.InvalidCastException: Invalid cast from 'Char' to 'Double'.     

3 Answers, 1 is accepted

Sort by
0
Sean
Top achievements
Rank 1
answered on 09 Dec 2015, 06:33 PM

...no way to edit a post eh?  Anyways, the following is the code for the Grid:

<telerik:RadGrid AllowPaging="true" PageSize="40" OnItemCommand="rg_ItemCommand" Height="600" ID="rg" MasterTableView-AllowFilteringByColumn="true" MasterTableView-AllowSorting="true" runat="server" AllowFilteringByColumn="true" AllowSorting="true">
                        <MasterTableView AutoGenerateColumns="false" HeaderStyle-Width="120" AlternatingItemStyle-Wrap="true">
                            <Columns>
                                <telerik:GridBoundColumn ItemStyle-Wrap="false" DataField="BillName" HeaderText="Customer" UniqueName="BillName">
                                </telerik:GridBoundColumn>
                                <telerik:GridBoundColumn ItemStyle-Wrap="false" DataField="Addr1" Display="True" HeaderText="Site" UniqueName="Addr1">
                                </telerik:GridBoundColumn>
                                <telerik:GridBoundColumn ItemStyle-HorizontalAlign="Center" DataField="ContractID" Display="true" HeaderText="Contract ID" UniqueName="CallID">
                                </telerik:GridBoundColumn>
                                <telerik:GridBoundColumn ItemStyle-HorizontalAlign="Center" DataField="SiteID" Display="true" HeaderText="Site ID" UniqueName="SiteID">
                                </telerik:GridBoundColumn>
                                <telerik:GridBoundColumn ItemStyle-HorizontalAlign="Center" DataField="CustID" Display="false" HeaderText="CustID" UniqueName="CustID">
                                </telerik:GridBoundColumn>
                                <telerik:GridBoundColumn ItemStyle-HorizontalAlign="Center" DataFormatString="{0:d}" DataField="EffectiveDate" HeaderText="Effective Date" UniqueName="EffectiveDate">
                                </telerik:GridBoundColumn>
                                <telerik:GridBoundColumn ItemStyle-HorizontalAlign="Center" DataFormatString="{0:d}" Display="false" DataField="ExpireDate" HeaderText="Expire Date" MaxLength="50" UniqueName="ExpireDate">
                                </telerik:GridBoundColumn>
                                <telerik:GridBoundColumn ItemStyle-HorizontalAlign="Right" DataFormatString="{0:C}" DataField="TotalAmt" HeaderText="Total Amount" MaxLength="50" UniqueName="TotalAmt">
                                </telerik:GridBoundColumn>
                                <telerik:GridBoundColumn ItemStyle-Wrap="false" DataFormatString="{0:C}" ItemStyle-HorizontalAlign="Right" DataField="TotalBilled" HeaderText="Total Billed" MaxLength="50" UniqueName="TotalBilled">
                                </telerik:GridBoundColumn>
                                <telerik:GridBoundColumn ItemStyle-HorizontalAlign="Center" DataField="Status" HeaderText="Contract Status" MaxLength="50" UniqueName="Status">
                                </telerik:GridBoundColumn>
                                <telerik:GridBoundColumn ItemStyle-HorizontalAlign="Center" DataFormatString="{0:d}" DataField="Lupd_DateTime" HeaderText="Last Updated" MaxLength="50" UniqueName="Lupd_DateTime">
                                </telerik:GridBoundColumn>
                            </Columns>
                        </MasterTableView>
                        <ClientSettings EnableRowHoverStyle="true" Selecting-AllowRowSelect="true" Scrolling-FrozenColumnsCount="3">
                            <Scrolling AllowScroll="true" UseStaticHeaders="true" />
                        </ClientSettings>
                        <GroupingSettings CaseSensitive="false" />
                    </telerik:RadGrid>

Here is the binding:

var contracts = (from ci in db.ContractInformationViews
                                 where sites.Contains(ci.SiteId.Trim())
                                 select new
                                 {
                                     ci.BillName,
                                     ci.Addr1,
                                     ci.ContractId,
                                     ci.SiteId,
                                     ci.CustId,
                                     ci.EffectiveDate,
                                     ci.ExpireDate,
                                     TotalAmt = ci.TotalAmt,
                                     TotalBilled = ci.TotalBilled,
                                     ci.Status,
                                     ci.Lupd_DateTime
                                 }).ToList();
 
                Session["ContractInfo"] = contracts;
                rg.DataSource = contracts;
                rg.DataBind();

Here is the export code:
rg.ExportSettings.Excel.Format = (GridExcelExportFormat)Enum.Parse(typeof(GridExcelExportFormat), "Xlsx");
       rg.ExportSettings.IgnorePaging = true;
       rg.ExportSettings.ExportOnlyData = true;
       rg.ExportSettings.OpenInNewWindow = true;
       rg.ExportSettings.FileName = "Contract Information";
       rg.MasterTableView.ExportToExcel();

0
Sean
Top achievements
Rank 1
answered on 09 Dec 2015, 07:28 PM

- RESOLVED -

 

Converting the status from Char to String fixed it.  Not sure why Excel, or your conversation process is trying to convert Chars to Doubles though.

0
Viktor Tachev
Telerik team
answered on 14 Dec 2015, 12:07 PM
Hello Sean,

By default Excel is trying to "guess" what is the content type in the cells and this can cause some errors.

If you would like to specify the format of the cells explicitly you should use the approach described in the following article:


On a side note, I noticed that you are using DataBind method to provide data for RadGrid. This method is used for simple data binding. As the name implies this type of binding is suitable only for the most simple scenarios.

In most cases it is recommended to use advanced data binding for RadGrid. You can handle the NeedDataSource event and set the DataSource for the grid in the handler.


Regards,
Viktor Tachev
Telerik
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 Feedback Portal and vote to affect the priority of the items
Tags
Grid
Asked by
Sean
Top achievements
Rank 1
Answers by
Sean
Top achievements
Rank 1
Viktor Tachev
Telerik team
Share this question
or