nar86 Ответов: 2

Как обновить gridview выбранную строку флажка в базе данных с помощью C#


В gridview запишите следующее

Selectdata идентификатор статус цена кол-во

флажок 1245 2 50 Новый
флажок 1245 1 25 Новый
флажок 4568 1 10 Новый
флажок 2345 1 25 Новый
флажок 4568 1 10 Новый

Из приведенного выше gridview я обновляю я выбираю первые две строки из gridview и upate в базе данных

Строка strConnString = ConfigurationManager.Выберите["Выберите"].Параметр connectionString;
SqlConnection con = new SqlConnection(strConnString);
против.Открыть();
foreach (строка GridViewRow в grdRpt.Rows)
{
CheckBox cb = (флажок)строка.FindControl("chkselecdata");
если (ЦБ.Проверено == правда)
{
int key = конвертировать.ToInt32(grdRpt.DataKeys[строка.Параметр rowindex].Значение);
SqlCommand cmd = new SqlCommand("UPDATE [transact].[transaction_item] установить статус = "Готов", где transactee_id=" + ключ.ToString(), con);
УМК.Метод executenonquery();
}
}
против.Закрывать();

я обновляю выбранную строку gridview в базу данных с помощью c#

в режиме запуска я выбираю первую строку в gridview для идентификатора 1245, но в базе данных 1245 для двух строк, обновленных в базе данных.

я не выбираю вторую строку в gridview
в режиме запуска я выбираю первую строку только в gridview для обновления в базе данных. но в базе данных обновляются две строки 1245.

в чем же ошибка в моем вышеприведенном коде?


в базе выходного я получаю следующим образом

ID кол-во статус цены

1245 2 50 готово
1245 1 25 готово

я выбираю только одну первую строку в gridview. но в базе две строки обновление ПО что ваш собственный антивирус видит код 1245

в чем заключается ошибка в приведенном выше коде?

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

В gridview запишите следующее

Selectdata идентификатор статус цена кол-во

флажок 1245 2 50 Новый
флажок 1245 1 25 Новый
флажок 4568 1 10 Новый
флажок 2345 1 25 Новый
флажок 4568 1 10 Новый

Из приведенного выше gridview я обновляю я выбираю первые две строки из gridview и upate в базе данных

Строка strConnString = ConfigurationManager.Выберите["Выберите"].Параметр connectionString;
SqlConnection con = new SqlConnection(strConnString);
против.Открыть();
foreach (строка GridViewRow в grdRpt.Rows)
{
CheckBox cb = (флажок)строка.FindControl("chkselecdata");
если (ЦБ.Проверено == правда)
{
int key = конвертировать.ToInt32(grdRpt.DataKeys[строка.Параметр rowindex].Значение);
SqlCommand cmd = new SqlCommand("UPDATE [transact].[transaction_item] установить статус = "Готов", где transactee_id=" + ключ.ToString(), con);
УМК.Метод executenonquery();
}
}
против.Закрывать();

я обновляю выбранную строку gridview в базу данных с помощью c#

в режиме запуска я выбираю первую строку в gridview для идентификатора 1245, но в базе данных 1245 для двух строк, обновленных в базе данных.

я не выбираю вторую строку в gridview
в режиме запуска я выбираю первую строку только в gridview для обновления в базе данных. но в базе данных обновляются две строки 1245.

в чем же ошибка в моем вышеприведенном коде?


в базе выходного я получаю следующим образом

ID кол-во статус цены

1245 2 50 готово
1245 1 25 готово

я выбираю только одну первую строку в gridview. но в базе данных две строки обновлены для этого selectd id 1245.


в чем заключается ошибка в приведенном выше коде?

2 Ответов

Рейтинг:
2

Paschga

Похоже, ваш код работает нормально.
Ваша проблема заключается в том, что вы не можете однозначно идентифицировать свою строку, поэтому каждая строка с transactee_id 1245 обновляется, чтобы заставить ее работать так, как вы ожидаете, вам нужен уникальный идентификатор (ID), который описывает только одну строку.

"UPDATE [transact].[transaction_item] SET Status = 'Ready' Where transactee_id=" + key.ToString()


Еще одна вещь, которую следует упомянуть, - это то, как вы объединяете свою строку обновления и свой параметр.
То, как вы это делаете, может привести к нескольким случайным ошибкам или даже инъекции!
Лучше всего было бы добавить свой "ключ" в качестве параметра (cmd.Parameters.AddWithValue();)


Рейтинг:
1

Richard MacCutchan

Здесь нет никакой ошибки. Ваш код делает именно то, что вы ему говорите: обновляет все записи с идентификатором 1245.