FeliceM
FeliceM

Reputation: 4199

Error on input string format not correct

I have this simple calculation but for some reason I am not picking up where the problem is. I am getting "format input string not correct" error.

This is the code:

protected void RadGrid1_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
    if (e.Item is GridDataItem)
    {
        GridDataItem dataItem = e.Item as GridDataItem;
        if (dataItem["AlternCost"].Text !=null)
        {
            dataItem["TotCost"].Text = ((Convert.ToInt32(dataItem["AlternCost"].Text)) * (Convert.ToDouble(dataItem["Quantity"].Text))).ToString();
        }
        else
        {
            dataItem["TotCost"].Text = ((Convert.ToInt32(dataItem["Cost"].Text)) * (Convert.ToDouble(dataItem["Quantity"].Text))).ToString();
        }
    }
}

The error is on this line:

dataItem["TotCost"].Text =
((Convert.ToInt32(dataItem["AlternCost"].Text)) *
(Convert.ToDouble(dataItem["Quantity"].Text))).ToString();

This is my stack trace:

in System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
in System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) in System.Convert.ToInt32(String value)
in xxx_621.RadGrid1_ItemDataBound(Object sender, GridItemEventArgs e) in c:\Users\xxx\Documents\Visual Studio 2012\Projects\^^xxxxxxxxxxx - BOM\members\xxx_621.aspx.cs:riga 57 in Telerik.Web.UI.RadGrid.OnItemDataBound(GridItemEventArgs e) in Telerik.Web.UI.RadGrid.CallOnItemDataBound(GridItemEventArgs e) in Telerik.Web.UI.GridItem.SetupItem(Boolean dataBind, Object dataItem, GridColumn[] columns, ControlCollection rows) in Telerik.Web.UI.GridItemBuilder.InitializeItem(Int32 dataSourceIndex, String& nextItemHierarchicalIndex, Boolean& itemIsInEditMode) in Telerik.Web.UI.GridItemBuilder.CreateItems(GridGroupingContext group) in Telerik.Web.UI.GridTableView.CreateItems(IEnumerator enumerator, GridColumn[] columns, ControlCollection controls) in Telerik.Web.UI.GridTableView.CreateControlHierarchy(Boolean useDataSource) in Telerik.Web.UI.GridTableView.CreateChildControls(IEnumerable dataSource, Boolean useDataSource) in System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable data) in System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable data) in System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) in System.Web.UI.WebControls.DataBoundControl.PerformSelect() in Telerik.Web.UI.GridTableView.PerformSelect() in System.Web.UI.WebControls.BaseDataBoundControl.DataBind() in Telerik.Web.UI.GridTableView.DataBind() in Telerik.Web.UI.RadGrid.DataBind() in System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() in System.Web.UI.WebControls.CompositeDataBoundControl.CreateChildControls() in System.Web.UI.Control.EnsureChildControls() in System.Web.UI.Control.FindControl(String id, Int32 pathOffset) in System.Web.UI.Control.FindControl(String id) in Telerik.Web.ChildControlHelper.FindControlRecursive(String ID, Control root) in Telerik.Web.ChildControlHelper.FindControlRecursive(String ID, Control root) in Telerik.Web.ChildControlHelper.FindControlRecursive(String ID, Control root) in Telerik.Web.ChildControlHelper.FindControlRecursive(Control searcher, String ID) in Telerik.Web.UI.RadAjaxControl.FindControlRecursive(String ID) in Telerik.Web.UI.RadAjaxControl.OnPagePreRender(Object sender, EventArgs e) in System.EventHandler.Invoke(Object sender, EventArgs e) in System.Web.UI.Control.OnPreRender(EventArgs e) in System.Web.UI.Control.PreRenderRecursiveInternal() in System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Can someone please give me a hint on how to solve the problem?

Upvotes: 0

Views: 695

Answers (1)

Dmitri E
Dmitri E

Reputation: 253

Shouldn't this be:

dataItem["TotCost"].Text = ((Convert.ToDouble(dataItem["AlternCost"].Text)) * (Convert.ToDouble(dataItem["Quantity"].Text))).ToString();

intead of:

dataItem["TotCost"].Text = ((Convert.ToInt32(dataItem["AlternCost"].Text)) * (Convert.ToDouble(dataItem["Quantity"].Text))).ToString();

note the Convert.ToDouble in both cases instead of ToInt32 and ToDouble?

Upvotes: 1

Related Questions