我正在开发我的第一个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;
提前感谢任何批评和指导。
答案 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();
}