在GridView编辑中,“输入字符串的格式不正确”

时间:2011-07-28 03:18:10

标签: c# asp.net gridview

我正在开发我的第一个asp.net项目,似乎无法解决此错误。下一步是计算两个值之间的差异(每个值在一个单独的网格视图中)并显示文本框中的差异。为了调试我有一个文本框来显示每个值,所以现在有3个文本框。其中一个值在可编辑的网格视图中,当我单击编辑时,我得到以下异常:

  

发生了System.FormatException消息=输入字符串不在   格式正确。 Source = mscorlib StackTrace:          在System.Number.StringToNumber(String str,NumberStyles   options,NumberBuffer& number,NumberFormatInfo info,Boolean   parseDecimal)          在System.Number.ParseDecimal(String value,NumberStyles   options,NumberFormatInfo numfmt)          在System.Decimal.Parse(String s)          在   caremaster.caremaster.FieldDetailsGridView_RowDataBound(Object sender,   GridViewRowEventArgs e)在M:\ My Documents \ file.cs中:第48行   的InnerException:

以下是代码示例:

protected void TotalNGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        string totNUnits = e.Row.Cells[0].Text;
        unitsN.Text = totNUnits;
        applied = decimal.Parse(e.Row.Cells[0].Text.ToString())                    
    }
}

protected void FieldDetailsGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        string recNUnits = e.Row.Cells[4].Text;
        recomN.Text = recNUnits;
        recommend = decimal.Parse(e.Row.Cells[4].Text.ToString()); // exception thrown
        calcNtoApply();
    }           
}

protected void calcNtoApply()
{
    decimal final;
    final = recommend - applied;           
    finalN.Text = final.ToString();
}

现在我正在检索GridView_RowDataBound上的数据。我想我对gridview事件的差异感到困惑。由于在单击“编辑”时会发生此错误,我是否应该在RowDataEditing中检索推荐值?

以下是一些其他细节:

decimal recommend; 

decimal applied;

提前感谢任何批评和指导。

2 个答案:

答案 0 :(得分:2)

使用Decimal.TryParse方法。

if(!String.IsNullOrEmpty(e.Row.Cells[4].Text))
 decimal.TryParse(e.Row.Cells[4].Text,out recommend);

答案 1 :(得分:0)

错误很明显:decimal.Parse无法转换e.Row.Cells[4]中的任何值。那有什么价值?

尝试这样做:

if (e.Row.RowType == DataControlRowType.DataRow)
{
    string recNUnits = e.Row.Cells[4].Text;

    recomN.Text = recNUnits;

    if(!String.IsNullOrEmpty(e.Row.Cells[4].Text))
    {
        recommend = decimal.Parse(e.Row.Cells[4].Text);
    }

    calcNtoApply();
 }