通过WEB按钮提交一组数据,结果常常发现数据库中有相同的两组或三组数据。经过查询后发现原来快速点击或者网络速度很慢的时候点击Button两次后就出现这种问题?请问有没有办法解决这种问题,而不需要通过提交数据库中的数据来做判断。
解决方案 »
- sql server managerment studio与c#里执行存储过程,返回值不一样
- 还是问JS的问题,在线等
- 为xml添加xmlns xsi
- 打算找几个兄弟合伙办个网站,大家看看我这个合作协议还有什么问题?
- ASP.NET WINDOWS验证登陆连接数据库@@@急急急`~在线等待。。。谢~~谢
- (跪求解决办法)有关在前台用Socket连接远程ftp服务器问题。大家来帮帮忙~,分不够可以在加!
- ASP.NET如何动态的加载Web用户控件,救命,高分
- 如何打印指定FRAME?
- 极度困惑!!!!!!!!如何点击框架中的left页面的button后触发right页面的事件呢?
- 请问这个源代码是什么?谢谢
- 一个功能强大的表单验证程序
- 在aspx中怎么取得aspx.vb中Index的值?
其实有一简单解决方法:
页面中加入:
<form onsubmit="return CheckFormSubmit();">
.....
</form>
<script>
var IsSubmited = false;
function CheckFormSubmit()
{
if(IsSubmited==true) return false; //如果为正在提交状态,则不允许再次提交
IsSubmited = true; //更改为提交状态
return true;
}
</script>
window.location.href=window.location.href
加上 Resonse.Redirect(本页)
Response.Write("<script language='javascript'>window.location.href=window.location.href;</script>");也可以重定向到其他页面
方法二:当多次提交时,可以在Button事件中先读数据库,检查当前数据在数据库中是否存在,如果有,则弹出窗口告知而不存入数据库,如果没有则存入数据库;
this.Button1.Attributes.Add("onclick","this.style.display="none";return true;");
应该可以解决大部分的问题this.style.display="none";这句脚本是纯客户端的,这时还没有发生回传,先把按钮置为不可见,然后才是return true;发生回传...
至于刷新的问题,只好Resonse.Redirect(本页)当然上面这些都还不够严谨,要更严谨就到后台做吧
function doubleClickCheck(){
if (window.document.readyState != null &&
window.document.readyState != 'complete'){
alert("处理中,请等待");
return false;
}
}
C#代码
this.printButton.Attributes["onClick"] = "return doubleClickCheck()";
同时禁掉刷新功能,不显示工具栏,禁掉右键菜单