Member 12695679 Ответов: 2

Как вставить все данные gridview в базу данных, используя цикл while


for (int y = 0; y < GridView1.Rows.Count - 0; y++)
{
  SqlCommand cmd2 = new SqlCommand("insertDeliveryNote_DetalisTBL2", con2);
 cmd2.CommandType = System.Data.CommandType.StoredProcedure;

 cmd2.Parameters.AddWithValue("@Customer_Id", LabelIdCustomer.Text);
 cmd2.Parameters.AddWithValue("@FK_DeliveryID", txtId.Text);
 cmd2.Parameters.AddWithValue("@Product_Id", GridView1.Rows[y].Cells[1].v);
  cmd2.Parameters.AddWithValue("@Product_Name", GridView1.Rows[y].Cells[2].ToString());
 cmd2.Parameters.AddWithValue("@Price", GridView1.Rows[y].Cells[3].ToString());
  
cmd2.ExecuteNonQuery();


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

Этот код дает мне ошибку - "Ошибка преобразования типа данных nvarchar в int".
Я пытаюсь вставить все данные из GridView1 в базу данных после привязки

Member 12695679

это ошибка
Ошибка преобразования типа данных nvarchar в int.

[no name]

Вам не кажется, что рассказать нам, в чем заключается ошибка, - это действительно очень важная информация, которой можно поделиться?

CHill60

Было ли это исключение сгенерировано линией cmd2.ExecuteNonQuery();?
Где-то у вас есть столбец nvarchar, и вы пытаетесь использовать его так, как если бы это было целое число. Разнесите код из хранимой процедуры insertDeliveryNote_DetalisTBL2 и включите схему таблицы

Member 12695679

cmd2.Параметры.AddWithValue ("@Product_Id", GridView1.Rows[y].Ячейки[0].Метод toString());
как преобразовать эту строку в int

CHill60

Если вы собираетесь ответить, используйте ссылку "ответить", иначе плакат не будет уведомлен.
И не перепечатывайте один и тот же вопрос! Будьте терпеливы.

2 Ответов

Рейтинг:
0

CHill60

Я ответил на этот вопрос на другом вашем посту Преобразование строки в целое число в gridview[^]


Рейтинг:
0

Ramesh Kumar Barik

Дорогой,

Вышеприведенное решение (от @Chill60) решит ваш вопрос. Поэтому следуйте шагам, которые он предлагает.

--------------
Если в gridview будет больше данных, то для каждой строки он будет вызывать хранимую процедуру, которая может вызвать проблемы с производительностью.

Из приведенной ниже ссылки вы можете получить представление о том, как вы можете передать все данные grdview в хранимую процедуру за один раз, не вызывая хранимую процедуру для каждой строки.

Отправка DataTable в хранимую процедуру[^]
Передача datatable в хранимую процедуру в SQL Server 2008[^]

Обратитесь к этим ссылкам, это может дать идеи.