大家好,小弟现有如下问题:
    我的aspx的页面上有一个LinkButton("Save"),点击Save的时候,页面向Server提交,在Server上会对数据库等操作.现在的问题是,有时候可能是因为网速稍微有点慢(我想的),当用户不小心出现双击或是多击Save,页面就多次向Server提交,Server上就会对数据库等进行多次相同的操作.(然后郁闷ing)
    请各位有遇到过的或是懂得解决的回答下面的问题:
    1.出现双击或是多击Save,页面就多次向Server提交,这种现象的原因是什么?
    2.有什么解决的方法?或是避免的解决方案?    谢谢.

解决方案 »

  1.   

    if(!IsPostBack){
      //代码
    }
      

  2.   

    1:WEB服务每收到一个请求就会执行一次
    2:解决方案 可以在做数据库执行前,检查逻辑,比如数据是否已经存在在数据库,避免重复动作
               也可以在点按钮时,立刻转向页面,使用户不能重复点击
      

  3.   

    to:tigerwen01(小虎)(编程艺术化)if(!IsPostBack)不行,这个页面会多次Save信息,所以Save后不能关闭页面,谢谢.
      

  4.   

    to:cxx1997(小网虫)(最厉害的妖怪)) 
    在点按钮时,立刻转向页面,使用户不能重复点击
    这个如何实现,请指教,谢谢
      

  5.   

    to: zhangqiushui(水)Response.Redirect("xxx.aspx")
    之后我怎么停留在我刚刚的页面啊???
      

  6.   

    <script language="JavaScript">
    var secs = 10;function buttonDisabled() {
        window.document.csvActionForm.btnSend.disabled = true;
        for(i = 1 ; i <= secs ; i ++) {
            window.setTimeout("update(" + i + ")", i * 1000);
        }
    }function update(num) {
        if(num == secs) {
            window.document.csvActionForm.btnSend.disabled = false;
        }
    }
    </script>在你的linkbutton的事件里,调用buttonDisabled即可。这段代码是延迟10秒。
      

  7.   

    点击后将按钮disable掉,很简单的js.
      

  8.   

    你可以加个客户端事件
    点击后变灰,也就是disabled = true执行完操作后再发一段js脚本
    把他变回来
    感觉隔一段时间变回来不太好link1.attributes.add("onclick","return test()");function test()
    {
        window.document.all.link1.disabled = true;
        return true;
    }//执行操作
    ......................string scriptString = "window.document.all.link1.disabled = false";
    if(!this.IsStartupScriptRegistered("Startup"))
             this.RegisterStartupScript("Startup", scriptString);
      

  9.   

    你还可以在scriptString 的前面加上alert('操作成功');window.location.href=window.location.href;
    防止用户刷新再次提交另外,你提交操作的代码里应该有逻辑检查的
      

  10.   

    让按钮变成不可用 设置enble = false
      

  11.   

    http://chjl.cn/Article/Read.aspx?ArticleID=82
    http://chjl.cn/Article/Read.aspx?ArticleID=172
    http://chjl.cn/Article/Read.aspx?ArticleID=292
      

  12.   

    IsPostBack = False里设置一个session("done")=""
    当你的save按钮点后先判定sesession("done")是否"",是则执行并session("done")="yes",否则跳出
      

  13.   

    加前台scriptbtn_name.attributes["onclick"] = "this.disabled = true;";想着写的
      

  14.   

    总结:
    1.提交后disable按钮一段时间link1.attributes.add("onclick","return test()");function test()
    {
        window.document.all.link1.disabled = true;
        return true;
    }//执行操作
    ......................string scriptString = "window.document.all.link1.disabled = false";
    if(!this.IsStartupScriptRegistered("Startup"))
             this.RegisterStartupScript("Startup", scriptString);2.在数据库端更新前检查3.重定向到本页面(ASP的方法) Response.Redirect("CureentPage.aspx")4.用Session,把页面提交的所有状态做成Session,每次提交时检查Sesion与当前提交内容是否相同,
    如果相同,就不提交(这种方法的缺点是有点占服务器端内存)