繁体   English   中英

使用存储过程从GridView删除行

[英]Deleting Row From GridView With Stored Procedure

我的代码有什么问题? 单击删除超链接(按钮)时,我想从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  

您可以在GridView中指定特定的单元格。 在您的代码中,您可以替换为:

GridView1.DataKeys[e.RowIndex].Values

与:

GridView1.Rows[e.RowIndex].Cells[xxx].Text

其中xxx是0索引的列号,其中包含EmployeeID。

这是我如何解决我的问题的方法)。

  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();

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM