我的代码有什么问题?我想点击删除超链接(按钮)时从gridview中删除一行。
它显示该值超出范围。我该怎么办?
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
cn = new SqlConnection(conStr);
delCmd = new SqlCommand();
cn = new SqlConnection(conStr);
cn.Open();
//delCmd.Connection = cn;
delCmd = new SqlCommand("spDelEmployee",cn);
delCmd.CommandType = CommandType.StoredProcedure;
delCmd.CommandText = "spDelEmployee";
delCmd.Parameters.Add("@EmployeeID", SqlDbType.Int).Value = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Values);
cn.Open();
delCmd.ExecuteNonQuery();
DataBind();
cn.Close();
}
存储过程:
ALTER PROCEDURE spDelEmployee
@EmployeeID int
AS
DELETE FROM Employed WHERE EmployeeID=@EmployeeID
RETURN
答案 0 :(得分:0)
您可以在GridView中指定特定单元格。在您的代码中,您只需替换:
GridView1.DataKeys[e.RowIndex].Values
使用:
GridView1.Rows[e.RowIndex].Cells[xxx].Text
其中xxx是包含EmployeeID的0索引列号。
答案 1 :(得分:0)
以下是我解决问题的方法。它有效。
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
cn = new SqlConnection(conStr);
cn.Open();
delCmd = new SqlCommand("spDelEmployee",cn);
delCmd.CommandType = CommandType.StoredProcedure;
object id = GridView1.Rows[e.RowIndex].Cells[em.EmployeeID].Text.ToString();
delCmd.Parameters.Add("@EmployeeID", SqlDbType.Int).Value = Convert.ToInt32(id);
delCmd.ExecuteNonQuery();
}