У меня есть веб-проект, в котором есть данные различных инструментов, я могу вставлять и удалять инструменты в RadGrid (который подключен к базе данных), но у меня возникают проблемы с командой редактирования
Один из Значения инструментов - это «Стоимость», которая является десятичной, когда я пытаюсь редактировать, половину времени я получаю эту ошибку:
«Входная строка не была в правильном формате»
Это мой метод редактирования, когда пользователь нажимает на модальной форме редактирования, чтобы отправить правку
protected void btnMdlEditar_OnClick(object sender, EventArgs e)
{
NumberStyles style;
CultureInfo provider;
style = NumberStyles.AllowDecimalPoint;
provider = new CultureInfo("en-US");
decimal costoDecimal;
var costo = editCosto.Text;
costoDecimal = decimal.Parse(costo.ToString(),style,provider);
try
{
var id = CDatos.DHerramientas.UpdateHerramientas(int.Parse(txtId.Text), editCodigo.Text, editNombreCorto.Text, editDescripcion.Text, costoDecimal, editConsumible.Text);
rgHerramientas.DataBind();
rgHerramientas.Rebind();
upHerramientas.Update();
this.ShowMessage(Resources.Language.mess_insert, "success");
}
catch (Exception ex) { this.ShowMessage(ex.Message, "danger"); }
this.CloseModal("mdlHerramientaEdit");
}
В строке
costoDecimal = decimal. Parse (costo.ToString (), style, provider);
Там, где я получаю сообщение об ошибке, появляется всплывающее окно FormatException, по какой-то причине упоминается проблема при разборе строки в DataTime. Я понятия не имею, почему я получаю эту ошибку, когда я использую точный код для анализа десятичного числа из строки в моем методе вставки
protected void btnAutorizar_OnClick(object sender, EventArgs e)
{
NumberStyles style;
CultureInfo provider;
style = NumberStyles.AllowDecimalPoint;
provider = new CultureInfo("en-US");
decimal costoDecimal;
var costo = txtCosto.Text;
costoDecimal = decimal.Parse(costo.ToString(),style,provider);
try
{
var id = CDatos.DHerramientas.InsertHerramientas(txtCodigo.Text, txtNombreCorto.Text, txtDescripcion.Text, costoDecimal, txtConsumible.Text);
this.upDatos.Update();
this.ShowMessage(Resources.Language.mess_insert, "success");
}
catch (Exception ex){this.ShowMessage(ex.Message, "danger"); }
this.CloseModal("mdlHerramienta");
}
Когда я редактирую данные, удаляя только некоторую часть числа или когда номер не изменяется, он выдает ошибку, но если я полностью удаляю номер и ввожу другое десятичное число, это позволяет мне его редактировать
7.85 to 7.89 = Error
7.85 to 6.12 = No error
У меня уже есть
, используя System.Globalization;
А моя текущая культура - "es-ES"
Редактировать: я пытался удалить "провайдера" из
costoDecimal = decimal.Parse (costo.ToString (), style, provider); что позволяет мне успешно редактировать, если я только изменяю часть номера, но если я набираю новый номер, используя "." это снова выдает ошибку
Я думаю, что проблема использует "." вместо "," - это метод, который используется в Испании для десятичных дробей, есть ли способ использовать оба "." и ","?