Member 14705346 Ответов: 1

Как я могу решить получить неправильную "входную строку не в правильном формате".


Я пытаюсь удалить количество из своей корзины покупок, что я делаю в gridview, но, похоже, я получаю неправильное исключение: "входная строка была не в правильном формате.

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            DataTable dt = new DataTable();
            dt = (DataTable)Session["buyitems"];


            for (int i = 0; i <= dt.Rows.Count - 1; i++)
            {
                int sr;
                int sr1;
                string qdata;
                string dtdata;
                sr = Convert.ToInt32(dt.Rows[i]["sno"].ToString());
                TableCell cell = GridView1.Rows[e.RowIndex].Cells[0];
                qdata = cell.Text;
                dtdata = sr.ToString();
                sr1 = Int32.Parse(qdata); //Wrong

                if (sr == sr1)
                {
                    dt.Rows[i].Delete();
                    dt.AcceptChanges();
                    //Label1.Text = "Item Has Been Deleted From Shopping Cart";
                    break;

                }
            }

            for (int i = 1; i <= dt.Rows.Count; i++)
            {
                dt.Rows[i - 1]["sno"] = i;
                dt.AcceptChanges();
            }

            Session["buyitems"] = dt;
            Response.Redirect("AddToCart.aspx");
        }


Что я уже пробовал:

Я попытался изменить тип переменной, но все равно остался прежним

F-ES Sitecore

"qdata" содержит текст, который не может быть преобразован в int. Вы не можете рассматривать ячейки gridview как данные, это элементы отображения html, а не столбцы в базе данных. Вы обнаружите, что, как и номер, у вас, вероятно, есть разрыв строки html или что-то подобное. Найдите какой-нибудь другой способ хранения этих данных, например в скрытом поле, или перечитайте данные из исходного источника данных.

Member 14705346

Ладно, спасибо

1 Ответов

Рейтинг:
2

OriginalGriff

Данные в ячейке не являются целым числом, представленным в виде строки: "12345" - это, "123ABC" - нет.

Когда вы используете Parse, если строка не полностью соответствует допустимому значению, она создает исключение, чтобы сообщить вам об этом. Существует versti=ion под названием TryParse, который вместо этого возвращает значение true / false, но в любом случае вам нужно использовать отладчик, чтобы посмотреть, что именно содержит ячейка и почему она не содержит то, что вы думаете, что она должна.

Извините, но мы не можем сделать это за вас - ему нужен доступ к отладчику во время выполнения вашего кода, чтобы точно узнать, что происходит, а у нас его нет!


Member 14705346

Tablecell в ячейке = gridview1, на.Ряды[электронный.Параметр rowindex].Ячейки[0];
ошибка CS1073: неожиданный токен "ячейка" //как решить проблему?
результат-qdata = "";