下面是个很简单的删除操作的代码,我加了异常处理,如果此时数据库产生了键约束异常(也就是我想删除一个管理员,可这管理员已经操作过数据,不能删除掉,那么会产生数据库异常)那么我想会弹出我编写的对话框提示:删除失败,可是为什么没弹出对话框,而是弹出一个页面出来提示键约束冲突!好像弹出这页面的优先级比弹出对话框高,我想弹出对话框提示键约束冲突,而不是页面。这样给人的感觉界面不友好,好像系统崩溃了,谁有好的主意????? 原因出现在mycmd.ExecuteNonQuery(); 执行到这一步时,调试器会弹出在 System.Data.SqlClient.SqlException 中第一次偶然出现的“System.Data.dll”类型的异常错误.
程序会执行catch,但不会显示失败对话框,只会弹出错误页面
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string message = "";
string deletemanagerid = GridView1.DataKeys[e.RowIndex].Value.ToString();
SqlDataSource1.DeleteCommand = "delete from tb_Manager where ManagerID='" + deletemanagerid + "'";
SqlConnection con = DataBase.myCon();
SqlTransaction sqltrans = con.BeginTransaction();
try
{ SqlCommand mycmd = new SqlCommand("delete from tb_Manager where ManagerID='" + deletemanagerid + "'", con);
mycmd.Transaction = sqltrans;
int num = mycmd.ExecuteNonQuery();
if (num > 0)
message = "提示:删除成功!";
else
message = "提示:删除失败!";
sqltrans.Commit();
}
catch (System.Data.SqlClient.SqlException)
{
message = "提示:删除失败!";
sqltrans.Rollback();
} finally
{
con.Close();
}
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", " <script type='text/javascript'>alert('" +message+ "'); </script>"); }
程序会执行catch,但不会显示失败对话框,只会弹出错误页面
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string message = "";
string deletemanagerid = GridView1.DataKeys[e.RowIndex].Value.ToString();
SqlDataSource1.DeleteCommand = "delete from tb_Manager where ManagerID='" + deletemanagerid + "'";
SqlConnection con = DataBase.myCon();
SqlTransaction sqltrans = con.BeginTransaction();
try
{ SqlCommand mycmd = new SqlCommand("delete from tb_Manager where ManagerID='" + deletemanagerid + "'", con);
mycmd.Transaction = sqltrans;
int num = mycmd.ExecuteNonQuery();
if (num > 0)
message = "提示:删除成功!";
else
message = "提示:删除失败!";
sqltrans.Commit();
}
catch (System.Data.SqlClient.SqlException)
{
message = "提示:删除失败!";
sqltrans.Rollback();
} finally
{
con.Close();
}
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", " <script type='text/javascript'>alert('" +message+ "'); </script>"); }
{
message = "提示:删除失败!";
sqltrans.Rollback();
throw ex;
}
这样就不会弹出来了
顺便说下,你的结帖率````````````
{
Response.Write("<script>alert('提示:删除失败!')</script>");
sqltrans.Rollback();
} 就改这一个地方就行了,需要抛异常就再加上
throw ex;
{
Response.Write(" <script>alert('提示:删除失败!') </script>");
sqltrans.Rollback();
}
throw ex;