问题描述: 在ASP.NET中使用GridView控件展示数据,并且允许用户进行编辑和更新操作。但是在保存更改到数据库时,发现无法成功保存。
解决方法:
...
...
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow row = GridView1.Rows[e.RowIndex];
int id = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value);
string name = ((TextBox)row.FindControl("txtName")).Text;
string email = ((TextBox)row.FindControl("txtEmail")).Text;
// 保存更改到数据库
string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
using (SqlConnection connection = new SqlConnection(connectionString))
{
string query = "UPDATE Users SET Name = @Name, Email = @Email WHERE ID = @ID";
SqlCommand command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@Name", name);
command.Parameters.AddWithValue("@Email", email);
command.Parameters.AddWithValue("@ID", id);
connection.Open();
command.ExecuteNonQuery();
}
GridView1.EditIndex = -1;
GridView1.DataBind();
}
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int id = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value);
// 从数据库中删除记录
string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
using (SqlConnection connection = new SqlConnection(connectionString))
{
string query = "DELETE FROM Users WHERE ID = @ID";
SqlCommand command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@ID", id);
connection.Open();
command.ExecuteNonQuery();
}
GridView1.EditIndex = -1;
GridView1.DataBind();
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
GridView1.DataBind();
}
在以上代码示例中,我们使用了SqlDataSource控件来绑定GridView控件的数据源,并在事件处理程序中执行数据库操作。你可以根据自己的具体需求和数据库结构进行相应的修改。