下面是个很简单的删除操作的代码,我加了异常处理,如果此时数据库产生了键约束异常(也就是我想删除一个管理员,可这管理员已经操作过数据,不能删除掉,那么会产生数据库异常)那么我想会弹出我编写的对话框提示:删除失败,可是为什么没弹出对话框,而是弹出一个页面出来提示键约束冲突!好像弹出这页面的优先级比弹出对话框高,我想弹出对话框提示键约束冲突,而不是页面。这样给人的感觉界面不友好,好像系统崩溃了,谁有好的主意?????
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
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;
mycmd.ExecuteNonQuery();
sqltrans.Commit();
Page.ClientScript.RegisterStartupScript(Page.GetType(), "", " <script language='javascript' defer>alert('" + "提示:删除成功!" + "'); </script>");
}
catch
{
sqltrans.Rollback();
Page.ClientScript.RegisterStartupScript(Page.GetType(), "", " <script language='javascript' defer>alert('" + "提示:删除失败!" + "'); </script>");
}
finally
{
con.Close();
} }
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
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;
mycmd.ExecuteNonQuery();
sqltrans.Commit();
Page.ClientScript.RegisterStartupScript(Page.GetType(), "", " <script language='javascript' defer>alert('" + "提示:删除成功!" + "'); </script>");
}
catch
{
sqltrans.Rollback();
Page.ClientScript.RegisterStartupScript(Page.GetType(), "", " <script language='javascript' defer>alert('" + "提示:删除失败!" + "'); </script>");
}
finally
{
con.Close();
} }
解决方案 »
- ******怎樣將GridView中Cells[0].Text相同內容的行合併,只合併Cells[0]列,其它列不合併
- Repeater1_ItemDataBound绑定的问题,为什么数据会下移
- 下拉菜单数据绑定(vb.net)
- 在asp.net应用程序中怎样用水晶报表?
- 在asp.net如何限制字数;
- 关于刷新的问题????
- AspNetPager控件配合Repeater分页的问题(VB代码分离版)
- NHibernate命名空间有小数点无法识别hbm.xml文件
- 我显示新闻的标题时,我只想显示前11个字,我用了Substring(0,11),但是当此新闻标题不足11个字的时候,就出错了!
- 小问题 紧急求助 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 打印出来的数据不显示表格
- asp.net实现病案检查
在GridView1_RowDeleting事件里try,就可以捕获了。
刚才楼上说在在GridView1_RowDeleting事件里try捕获,在哪事件里去执行GridView1_RowDeleting事件呢
{
sqltrans.Rollback();
Page.ClientScript.RegisterStartupScript(Page.GetType(), "", " <script language='javascript' defer>alert('" + "提示:删除失败!" + "'); </script>"); }试试也有可能是sqltrans.Rollback(); 发生了错误,这个时候就从catch中再抛出了错误。还有就是你可以单步调试,这样的话,看看catch中的语句是否执行。
catch
{
sqltrans.Rollback();
Page.ClientScript.RegisterStartupScript(Page.GetType(), "", " <script language='javascript' defer>alert('" + "提示:删除失败!" + "'); </script>");
}
{
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
{
message = "提示:删除失败!";
sqltrans.Rollback();
}
finally
{
con.Close();
}
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", " <script type='text/javascript'>alert('" +message+ "'); </script>"); }
{
string str="":
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;
mycmd.ExecuteNonQuery();
sqltrans.Commit();
str="删除成功! "
}
catch (SqlException ex)
{
}
catch (Exception exception)
{
sqltrans.Rollback();
str="删除失败!";
}
finally
{
con.Close();
}
Page.ClientScript.RegisterStartupScript(Page.GetType(), "", " <script language='javascript' defer>alert('" + str + "'); </script>");
}
或设置
设置错误转向页面
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
{
message = "提示:删除失败!";
sqltrans.Rollback();
}
finally
{
con.Close();
}
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", " <script type='text/javascript'>alert('" +message+ "'); </script>"); }