注册 登录
编程论坛 ASP.NET技术论坛

奇怪的事,GridView删除问题,附原码及说明,大家可能没注意到。

小仙 发布于 2008-11-06 20:28, 1954 次点击
今天做程序,无意中在GridView删除的代码调试中打了个断点,并在断点出退出,可一件奇怪的事发生了,退出后,记录居然删除了,也就是说,我虽然退出了程序,可程序还是运行了我下面的删除代码,简直有点匪夷所思,如果不是在调试时无意中退出,还真不可能发现这么个细节。不知道大家有无相同之经历,反正我研究半天也没得其所以然来,希望与诸位一同探讨,细节的发现往往是令人欣喜的。我想与大家一同研究,就算是点小问题,研究出来也是有所裨益的。
我在断点的下面,写上return再退出的话。又没有删除我选中的记录,说明程序在我退出后,的的确确是往下面运行了,这真是个奇怪的现象。
下面传上源码里头aspx文件里有注释。
只有本站会员才能查看附件,请 登录


[[it] 本帖最后由 小仙 于 2008-11-12 17:48 编辑 [/it]]
17 回复
#2
小仙2008-11-06 20:30
数据库脚本也在压缩包中。程序很简单。问题很有趣。
#3
小仙2008-11-06 21:14
这个问题,我决定悬赏200积分~
#4
寂寞的柳丁2008-11-06 22:50
因为虽然你停止了调试,此时退出但是程序是继续运行的所以就把数据删除掉了 。。。

而你用了return之后很显然返回了。。这个毋庸置疑的。。
#5
小仙2008-11-07 10:42
回复 4# 的帖子
停止调试,怎么还会往下面运行呢 ?这点我很不能理解 。
#6
寂寞的柳丁2008-11-07 13:03
你调试是停止了。。程序还是在内存中运行呢。。
#7
shmilylee2008-11-07 16:30
确实很诡异,不光是manage.DeleteEmp(nID);这个函数执行了,下面的函数也执行了
还有个奇怪的事情,我把删除事件里面其他的都注释掉了,只留下一行弹出对话框,点击1次删除,正确弹出,可是我再刷新页面还是会弹出,而且还是在页面呈现之前,也就是还说刷新页面也会执行"删除"的事件.
有可能DeleteEmp函数确实在断点处停止了,但是由于是web程序,它会自动刷新一下,这时又触发了gvEmp_RowDeleting事件,造成删除了数据

但是到底为什么会去触发gvEmp_RowDeleting事件,百思不得其解,所以我比较讨厌
楼主你又害我死不少脑细胞,你这下有罪了...

至于楼上的说法我不敢赞成,winform好像没有这样的事情发生!

[[it] 本帖最后由 shmilylee 于 2008-11-7 16:32 编辑 [/it]]
#8
小仙2008-11-07 18:21
回复 7# 的帖子
winform是肯定不会这样的,停止就不往下走了,以前试过。但是你所说刷新弹出对话框,一般是有输入你没输入直接刷新就会弹个对话框提示你重试,从B/S模式解释,就是刷新又象服务器发送请求,但是由于没有改变,仍旧发送回原来的指令,所以又闪了次对话框,初学asp哎,很混沌的。大家一起讨论下啊,莫非这个是正常现象?
#9
小仙2008-11-07 19:06
回复 7# 的帖子
你的弹出对话框,是从后台的response发送的,还是前台的js脚本验证产生的?
#10
shmilylee2008-11-07 23:04
就用的你写的弹出的!
#11
小仙2008-11-08 08:10
那是从后台弹出的,可能没有新的指令,还是重复上一次的post请求吧。这也是我的猜测,看楼下的人说对不对了,哎,我的这个问题,可还没解决呢。
#12
寂寞的柳丁2008-11-08 22:33
如果你删除操作之后 弹出对话框。。之后你关闭弹出的对话框。。。然后此时刷新页面
实际上就等于执行一个静态页面。。。当然会弹出确定的对话框了。。
#13
小仙2008-11-09 18:30
难道这个情况很正常?
#14
寂寞的柳丁2008-11-10 08:40
无论你在什么页面执行什么样的操作。。只要你用alert弹出一个对话框 你关闭之后刷新页面就会再次弹出这个确定对话框。。。
#15
寂寞的柳丁2008-11-10 08:41
这并不是说 这时又触发了gvEmp_RowDeleting事件,造成删除了数据 这只是客户端执行了js代码而已。。
#16
小仙2008-11-12 17:47
掉了个存储过程删除的脚本。补上脚本。
create proc deleteEmp
@empID int
as
delete emp
where empID = @empID
#17
小仙2008-11-15 19:44
就没有下文了?
#18
smltq2008-11-17 09:26
一直在关注着
1