aspx页面被多个web控件回发时,如果保证这些回发的串行执行??

KevinLoo 2003-08-20 12:25:27
比如说一个页面中有两个web控件A、B
A产生postback后,再服务器上的处理时间比较长,比如2秒吧
再这2妙之内,用户又点击了控件B
而B产生回发后会依赖于A的处理结果修改数据库
这时就会出错!而且A的处理可能丢失!

有没有办法保证控件A、B回发处理程序的执行是串行的,或者最好控件A产生回发时,制止控件B产生回发。

解决办法最好能解决多控件回发的问题。

谢谢大家了!
...全文
27 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxdneu 2003-08-20
  • 打赏
  • 举报
回复
先把enable=false
然后在 =true
loulanlouzhu 2003-08-20
  • 打赏
  • 举报
回复
A处理完后

再把B显示出来
acewang 2003-08-20
  • 打赏
  • 举报
回复
不错不错
cyp503 2003-08-20
  • 打赏
  • 举报
回复
先隐藏B,在A处理完后,即页面PostBack后

再把B显示出来
acewang 2003-08-20
  • 打赏
  • 举报
回复
没想过,帮你up
cyp503 2003-08-20
  • 打赏
  • 举报
回复
>>>>让一个控件的回发阻止此页面上所有其他控件的回发

试试在客户端用cookie来保存控件的状态
KevinLoo 2003-08-20
  • 打赏
  • 举报
回复
不知道能不能想办法在客户端设置一个类似全局变量的冬冬(例如javascript在一个页里写个变量var a=false),在执行__doPostBack()时设置此变量a=true,在每次执行__doPostBack()时先检查一下a,然后再决定是否调用theform.submit(),这样好像就可以了,就是不知道具体怎么写,因为__doPostBack()是服务器代码生成的客户端html代码,哪位大侠帮帮忙~~~
cyp503 2003-08-20
  • 打赏
  • 举报
回复
>>>而过早的点击确定

这个操作应该是允许的

这就说明等待第一个处理的同时,用户改变了主意

要点击其他链接

chnking 2003-08-20
  • 打赏
  • 举报
回复
你要达到这样的目的好像就没办法了,还是教育用户不要点击的太快吧
KevinLoo 2003-08-20
  • 打赏
  • 举报
回复
简单的讲,我这个页面中根据数据库中的数据动态生成了一个树,树的每一个叶子节点都是一个checkbox,那么checkbox的被选中时会触发postback,而服务器的处理程序需要访问数据库决定某一个checkbox的选中会不会导致其他的某些checkbox也被选中,所以处理需要一小段时间,页面的最后有个确定按钮,将用户的修改保存回数据库。如果用户选中一个checkbox,而在服务器处理这个postback事件时还没有完成时,用户又点击了确定或者其他的checkbox,问题就出现了,页面会被第二个回发的结果修改,而第一个回发的处理结果可能丢失。比如说,第一次check可能造成服务器将其他的一些checkbox修改为checked,而过早的点击确定,将会把这些本应该被服务器修改状态的checkbox的数据信息丢失!

这个问题似乎也不便于通过界面设计来引导用户,而且引导用户一般是要在客户端编程(javascript)才行,因为服务器上将某个控件,比如说一个按钮Enable=false,在服务器处理完之前,页面的按钮都是不会被Disable的
chnking 2003-08-20
  • 打赏
  • 举报
回复
呵呵,理解错你的意思了

可以一开始就不显示B,在点击了A之后,在A的事件处理代码中让B显示出来,同时隐藏A.
cyp503 2003-08-20
  • 打赏
  • 举报
回复

通过界面的设计来引导用户的操作,是个常用的办法

就像CSDN回复帖子一样,按了“发出回复”后,就把

这个按钮隐藏,防止重复提交。

>>>>让一个控件的回发阻止此页面上所有其他控件的回发

试试在客户端用cookie来保存控件的状态

chnking 2003-08-20
  • 打赏
  • 举报
回复
你说的这种情况根本就不涉及到事件处理的顺序问题
"A产生postback后,再服务器上的处理时间比较长,比如2秒吧
再这2妙之内,用户又点击了控件B"
要是在A产生postback后,服务端还没有处理完返回结果给客户端,这时客户端又点击了B按钮,浏览器就会抛弃上一次的请求,继而发送点击这个B按钮产生的请求给服务端了.
所以你说的根本就是两个独立的请求,不涉及到你说的问题的.
KevinLoo 2003-08-20
  • 打赏
  • 举报
回复
A处理完后,再把B显示出来是不行的;

首先,如果是在服务器端处理A的程序开始是隐藏B,结束时显示B,这是没有意义的,在客户端B会一直显示B,并可以随时产生回发事件。

其次,假如还有控件C,其处理结果也可能影响B的执行(注意是可能,用户也可以不点击C产生回发),那么A处理完后,B显示出来,这是再点击C,然后点击B,同样会出问题啊

除非有办法从根本上解决问题,就是让一个控件的回发阻止此页面上所有其他控件的回发,或者在服务器上对同一客户端程序产生的所有的回发用同一页对象排队进行处理。可是不知道怎么才能做到这些???
国际学术期刊Science/AAAS和英特尔在全球首次联袂推出第一季《架构师成长计划》以来,吸引了无数架构师踊跃参与,获得业内广泛赞誉。为持续助力架构师把握数智机遇,构建未来,第二季《架构师成长计划》全新升级,强势归来!业内顶尖架构师大咖齐聚,为架构师群体量身打造系统成长课程,带来涵盖云游戏、云原生、联邦学习、生信大数据、算力网络、云网融合等多个热门话题的前沿技术及案例实践。第一期:超视频时代 音视频架构建设与演进复制链接收看完整内容:https://bizwebcast.intel.cn/eventstart.aspx?eid=298&tc=yxq0921l2d&frm=csdn_2第二期:转化医学研究背景下的高性能计算平台复制链接收看完整内容:https://bizwebcast.intel.cn/eventstart.aspx?eid=311&tc=pzw21rx59o&frm=csdn_2第三期:联邦学习的研究与应用实践复制链接收看完整内容:https://bizwebcast.intel.cn/eventstart.aspx?eid=315&tc=0e8trfvt8i&frm=csdn_2第四期:用架构思维为云原生做减法复制链接收看完整内容:https://bizwebcast.intel.cn/eventstart.aspx?eid=316&tc=i2kgf55ggn&frm=csdn_2第五期:网络智能化技术与演进复制链接收看完整内容:https://bizwebcast.intel.cn/eventstart.aspx?eid=322&tc=ckhvmonqvb&frm=CSDN_2第六期:异构计算 数据中心“芯”变革复制链接收看完整内容:https://bizwebcast.intel.cn/eventstart.aspx?eid=325&tc=mzppx1h6ri&frm=csdn_2第七期:筑算力,话东西复制链接收看完整内容:https://bizwebcast.intel.cn/eventstart.aspx?eid=327&tc=gwb7n8x79n&frm=csdn_2第八期:AI驱动的生命科学创新范式之变复制链接收看完整内容:https://bizwebcast.intel.cn/eventstart.aspx?eid=328&tc=zircyqwy9u&frm=csdn_2第九期:软硬一体实现数据库性能优化复制链接收看完整内容:https://bizwebcast.intel.cn/eventstart.aspx?eid=348&tc=4a46kfrb0o&frm=csdn_2第十期:AI规模化应用时代的深度学习平台构建复制链接收看完整内容:https://bizwebcast.intel.cn/eventstart.aspx?eid=349&tc=fm9a1mrumb&frm=csdn_2

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧