При редактировании GridView «Неправильная строка ввода» - PullRequest
2 голосов
/ 28 июля 2011

Я работаю над своим первым проектом asp.net и, похоже, не могу обойти эту ошибку. Следующим шагом является вычисление разницы между двумя значениями (каждое в отдельном виде сетки) и отображение разницы в текстовом поле. Для отладки у меня есть текстовое поле для отображения каждого значения, поэтому сейчас есть 3 текстовых поля. Одно из значений находится в редактируемом виде сетки, когда я нажимаю кнопку «Изменить», я получаю следующее исключение:

Произошло исключение System.FormatException. Сообщение = входной строки не было правильный формат. Source = mscorlib StackTrace: в System.Number.StringToNumber (String str, NumberStyles параметры, NumberBuffer & number, информация NumberFormatInfo, логическое значение parseDecimal) at System.Number.ParseDecimal (Строковое значение, NumberStyles параметры, NumberFormatInfo numfmt) at System.Decimal.Parse (String s) в caremaster.caremaster.FieldDetailsGridView_RowDataBound (Отправитель объекта, GridViewRowEventArgs e) в M: \ Мои документы \ 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 ]

2 голосов
/ 28 июля 2011

Использовать Decimal.TryParse метод.

if(!String.IsNullOrEmpty(e.Row.Cells[4].Text))
 decimal.TryParse(e.Row.Cells[4].Text,out recommend);
0 голосов
/ 28 июля 2011

Ошибка довольно очевидна: 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();
 } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...