1、我们做的是ASP网站,其中我想问的的【禁止删除】的代码如下:
1 //删除 2 protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) 3 { 4 string sqlstr = "delete from Students where userID='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'"; 5 sqlcom = new SqlCommand(sqlstr, conn); 6 7 if (GridView1.DataKeys[e.RowIndex].Value.ToString() == "10000000000") //基本管理员不允许删除 8 { 9 Response.Write("<script>alert('不允许删除基本管理员用户!')</script>"); 10 } 11 else 12 { 13 conn.Open(); 14 sqlcom.ExecuteNonQuery(); 15 conn.Close(); 16 Response.Write("<script>alert('删除成功!')</script>"); 17 } 18 bind(); 19 }
2、我经过断点测试,程序的确是当识别到ID号为10000000000时会执行if语句,跳过else语句。但是ID号为10000000000的记录还是被删除了。
3、希望各位能给一点解决办法的意见,若需要其他代码请留言,我会贴出。
建议检查一下其他地方是否有删除操作的代码
你的SqlCommand貌似是全局的~可能还有别的地方会有删除操作。
为啥不把sqlcom = new SqlCommand(sqlstr, conn);放到else语句呢
语句有先后的顺序,建议先判断,然后再执行sql语句,也就是说GridView1.DataKeys[e.RowIndex].Value.ToString() == "10000000000")
不删除,还要加上return;
另外,把
string sqlstr = "delete from Students where userID='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
sqlcom = new SqlCommand(sqlstr, conn);
放入else区块。