C# 无法从表中删除最后一行
这种情况是,用户可以将模块添加到他们的配置文件中,在添加一行后,这些模块将被重定向到包含gridview的页面。gridview显示其当前选择的所有模块。gridview的每一行都包含一个“删除”按钮,允许用户从其配置文件中删除模块。如果gridview行数>1,则用户在删除模块时没有问题。但是,当表中只剩下一行时,按“删除”按钮不会删除该行。删除该行的唯一方法是注销并再次登录。我不明白为什么会这样。我确信存储过程没有问题,因为我已经手动执行了sp,并且能够从表中删除行,不管还有多少行 以下是按下按钮时执行的代码:C# 无法从表中删除最后一行,c#,asp.net,sql,C#,Asp.net,Sql,这种情况是,用户可以将模块添加到他们的配置文件中,在添加一行后,这些模块将被重定向到包含gridview的页面。gridview显示其当前选择的所有模块。gridview的每一行都包含一个“删除”按钮,允许用户从其配置文件中删除模块。如果gridview行数>1,则用户在删除模块时没有问题。但是,当表中只剩下一行时,按“删除”按钮不会删除该行。删除该行的唯一方法是注销并再次登录。我不明白为什么会这样。我确信存储过程没有问题,因为我已经手动执行了sp,并且能够从表中删除行,不管还有多少行 以下是按
else if (e.CommandName == "Remove")
{
//deleteUserModule
Debug.WriteLine("userID: " + userID + ", code: " + moduleCode);
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["CMS"].ConnectionString))
{
using (SqlCommand cmd = new SqlCommand("deleteUserModule", conn)
{
CommandType = CommandType.StoredProcedure
})
{
cmd.Parameters.Add(new SqlParameter("@moduleCode", SqlDbType.NVarChar)).Value = moduleCode;
cmd.Parameters.Add(new SqlParameter("@userID", SqlDbType.Int)).Value = userID;
conn.Open();
cmd.ExecuteNonQuery();
cmd.Dispose();
conn.Dispose();
}
}
moduleCode = String.Empty;
Page.Response.Redirect(Page.Request.Url.ToString(), true);
}
关于为什么只有在注销并重新登录后才能删除最后一行,有什么建议吗
更新:
在检查抛出的异常后,感谢@BrendanGreen的建议,我将refresh语句更改为:
Page.Response.Redirect(Page.Request.Url.ToString(), true);
Page.Response.Redirect(Page.Request.Url.ToString(), true);
致:
问题不再存在在检查抛出的异常后,感谢@BrendanGreen的建议,我已将refresh语句更改为:
Page.Response.Redirect(Page.Request.Url.ToString(), true);
Page.Response.Redirect(Page.Request.Url.ToString(), true);
致:
问题不再存在执行命令时是否引发任何错误/异常?调试控制台中的唯一输出是mscorlib.dll中发生了“System.Threading.ThreadAbortException”类型的首次意外异常mscorlib.dll中发生了“System.Threading.ThreadAbortException”类型的异常,但未在用户代码中处理“在执行删除之前,您是否在日志语句中获得了正确的详细信息?是的,两个值都是正确的。那么……该值是否确实已从数据库中删除,但在网格中显示了您的问题所在?可能值得发布执行删除的完整函数以及显示网格的代码。