我正在使用asp.net网格视图从sql数据表中加载数据。我能够成功加载数据。
SQL表设计: 3个cloumns:Location,Firstname,LastName
位置是主键。
设计 :
Aspxpage有一个gridview,其底部有两个按钮:
当用户单击“编辑”按钮时,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”。”
您需要向SqlCommand对象添加一个名为“ @Location”的参数。您提到位置是网格中的列之一- 您可以从列中读取值(类似于获取名字和姓氏值的方式),也可以将“ Location”指定为数据键,然后从网格的DataKeys属性获取它。
我将看一下Codeplex上的ASP.NET Real World Controls项目。它允许批量编辑,并且它足够聪明以仅更新已更改的行。