C# 无法在网格视图中的行删除事件中获取单元格值
我正在尝试删除网格视图中的行。对于这一点,我在下面的行删除事件中编写代码C# 无法在网格视图中的行删除事件中获取单元格值,c#,asp.net,gridview,C#,Asp.net,Gridview,我正在尝试删除网格视图中的行。对于这一点,我在下面的行删除事件中编写代码 protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { string UserId; SqlTransaction tran; using (con = new SqlConnection()) {
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string UserId;
SqlTransaction tran;
using (con = new SqlConnection())
{
con.ConnectionString = ConfigurationManager.ConnectionStrings["EMASFBAConnectionString"].ConnectionString;
cmd = new SqlCommand();
cmd.Connection = con;
con.Open();
tran = con.BeginTransaction();
TableCell cell = GridView1.Rows[e.RowIndex].Cells[1];
string username = cell.Text;
cmd.Transaction = tran;
cmd.CommandText = "Delete from aspnet_Users where UserName='" + username + "'";
UserId = cmd.ExecuteScalar().ToString();
if (UserId.Length!=0)
{
//delete user from membership table.
errorLabel.Text = "User is ready to delete";
}
tran.Commit();
con.Close();
}
}
调试时,单元格值为空。我在这里犯了什么错?
此网格视图在每行前面都有“编辑”和“删除”按钮。
我尝试使用
单元格[0],单元格[2]
,但只给出空值。有谁能给我这个解决方案吗?我在gridview中定义数据键并使用这个方法
string UserID = GridView1.DataKeys[e.RowIndex].Value.ToString();
然后根据该ID删除该行
cmd.CommandText = "Delete from aspnet_Users where UserID=" + UserID;
之后,调用databind方法将gridview与更新的记录绑定
对于DataKeyName,请使用此
<asp:gridview datakeynames="UserID"
runat="server">
请尝试以下代码:
var empId = Convert.ToInt32(this.gvDetails.DataKeys[e.RowIndex].Values["EmpId"].ToString());
终于得到了答案。如果我试图以表格单元格的形式获取这些值,那么就没有给出正确的值。所以我试着这样做
GridViewRow row = GridView1.Rows[e.RowIndex];
Label usernamelable = (Label)row.FindControl("lblUserNameValue");
string username = usernamelable.Text;
这对我来说很好。我指的是gridview中的label控件并获取值。是否确实编写了删除代码,如“commandtext”中的“write select”命令所示?没问题。我只是从上一个块中复制了文本,使其生效。但这里的问题是细胞价值并没有到来。它以空值的形式出现。现在查看已编辑的问题。它非常简单,您可以在html中将其设置为:在我编写相同的答案之前,您已经获得了它,如果您使用ItemTemplate行,那么最好通过FindControl()方法获取值。对我来说,这是获取特定键的值的正确方法。