无法从表中删除最终行

时间:2014-03-04 00:21:59

标签: 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的建议,我已经更改了刷新语句:

Page.Response.Redirect(Page.Request.Url.ToString(), true);

要:

Response.Redirect("myModules.aspx", false);
                Context.ApplicationInstance.CompleteRequest();

问题不再存在

1 个答案:

答案 0 :(得分:0)

在检查出抛出的异常后,感谢@BrendanGreen的建议,我更改了以下的刷新声明:

Page.Response.Redirect(Page.Request.Url.ToString(), true);

要:

Response.Redirect("myModules.aspx", false);
            Context.ApplicationInstance.CompleteRequest();

问题不再存在