下面是个很简单的删除操作的代码,我加了异常处理,如果此时数据库产生了键约束异常(也就是我想删除一个管理员,可这管理员已经操作过数据,不能删除掉,那么会产生数据库异常)那么我想会弹出我编写的对话框提示:删除失败,可是为什么没弹出对话框,而是弹出一个页面出来提示键约束冲突!好像弹出这页面的优先级比弹出对话框高,我想弹出对话框提示键约束冲突,而不是页面。这样给人的感觉界面不友好,好像系统崩溃了,谁有好的主意????? 原因出现在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>");     }

解决方案 »

  1.   

    Response.Write("提示:删除失败!");
      

  2.   

    catch (System.Data.SqlClient.SqlException ex) 
            { 
                message = "提示:删除失败!"; 
                sqltrans.Rollback(); 
                throw ex;
            } 
    这样就不会弹出来了
      

  3.   

    Response.Write("<script>alert('提示:删除失败!')</script>");
    顺便说下,你的结帖率````````````
      

  4.   

    catch (System.Data.SqlClient.SqlException ex) 
            { 
                Response.Write("<script>alert('提示:删除失败!')</script>");
                sqltrans.Rollback(); 
            } 就改这一个地方就行了,需要抛异常就再加上
    throw ex;
      

  5.   

    catch时你没有调用Page.ClientScript.RegisterStartupScript方法,自然弹不出来,你把它写成一个方法,try和catch时调用一下
      

  6.   

    catch (System.Data.SqlClient.SqlException ex) 
            { 
                Response.Write(" <script>alert('提示:删除失败!') </script>"); 
                sqltrans.Rollback(); 
            } 
    throw ex; 
      

  7.   

    但上面解决方案都和我产生同样的错误,错误没解决,光throw ex,那就是把异常抛出,也是提出错误页面,