Я использую представление сетки asp.net для загрузки данных из таблицы данных sql. Я могу успешно загрузить данные.asp.net grid view bulk update all cells
Sql Таблица Desgin: 3 cloumns: Местоположение, Firstname, LastName
Расположение является первичным ключом.
Дизайн:
Aspxpage имеет GridView, который имеет две кнопки в нижней части:
- Edit
- Сохранить
Когда пользователь нажимает кнопку Редактировать все ячейки в GridView становятся редактируемыми, поэтому пользователь может редактировать и сохранять значения.
Проблема возникает с кнопкой сохранения, где я не могу сохранить отредактированные данные обратно в SQL.
Вот код для кнопки сохранения нажмите:
protected void btnSave_Click(object sender, EventArgs e)
{
int RowIndex=0;
GridViewRow row = (GridViewRow)gvres.Rows[RowIndex];
TextBox txtLanguage1 = row.FindControl("txtFName") as TextBox;
TextBox txtLanguage2 = row.FindControl("txtLName") as TextBox;
SqlConnection myConnection = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand("UPDATE UsersTable SET FirstName = @FirstName, LastName = @LastName WHERE Location = @Location", myConnection);
cmd.Parameters.AddWithValue("@FirstName", txtFirstName.Text.Trim());
cmd.Parameters.AddWithValue("@LastName", txtLastName.Text.Trim());
myConnection.Open();
cmd.ExecuteNonQuery();
gvusers.EditIndex = -1;
DataBind();
}
Исключение: «Необходимо объявить скалярную переменную„@Location“.»
@Location означает, что Insert/Update ожидает, что это поле будет передано/добавлено в ваши cmd.Parameters, где вы добавляете @Location ...? посмотрите на строку, где у вас есть это WHERE Location = @Location ", myConnection); add/declare cmd.Parameters.AddWithValue (" @ Location ", someLocationValue.Trim()); – MethodMan
Переменная RowIndex жестко закодирована до 0, поэтому только первая строка будет обновлена.Если есть только 1 кнопка сохранения для всей сетки, это будет проблемой. –
да, что я нашел сейчас. Идет только по первой строке ... Так как я прохожу через все строки и обновление. – Macnique