您的位置:知识库 » .NET技术

获取confirm返回值的故事

作者: 純→白銫.NET  来源: 博客园  发布时间: 2009-07-20 10:22  阅读: 11671 次  推荐: 2   [收藏]  
摘要:炎热的暑假已经来临,而火热的实习还在继续,这不,小白在实习的路上又遇到棘手的问题了,这次又是什么问题呢?————关于如何在后台获取confirm返回值,并且返回给前台

  也许很多人看了这个标题就会不屑看下去,大可以说网上多的去了这种问题的文章,的确,当我碰到这个问题的时候,我也首先在网上找了很多资料,但是没有合适的,或者说没有讲的清晰的,而后,我又问了几个牛人,以及几位同事,也都没有搞懂,后来在我老大的帮助下,最终还是解决了,所以我觉得有这个必要写出来给大家分享下~

  废话说了这么多,还是直奔主题吧~
  我的要求是这样的,页面上有个表单,表单的内容是绑定数据库的,需要动态刷新的,而后有个按钮——save,点击之后为保存到数据库——Insert_Save(),又有个按钮submit,点击之后直接提交到数据库Insert_Submit(),两者的区别是插入到不同的表中,现在我要设计这个保存按钮,要求经过2个函数的判断,才能够执行insert,分别是Ckeck_Empty()以及Check_Formal(),即检测是否全填了和格式是否都正确,这两个方法都在后台完成了,现在的任务就是,在点击save按钮之后,需要弹出confirm选择框,“是否需要直接提交?”,如果点击“是”,则执行与submit按钮相同的操作,若否则进行save操作,那我如何才能把confirm的值保存下来呢?
  很多人可能这么想:(因为要求在后台执行)
  ScriptManager.RegisterStartupScript(
  this.Page,
  this.Page.GetType(),
  this.ClientID,
  "<script language=\"javascript\" type=\"text/javascript\" >
  if(confirm('需要直接提交吗?'))
  {
    Insert_Save()
  }
  else
  {
    Insert_Submit()
  }
  </script>" ,
  false);
  然后再实际的操作当中,却发现了这个弹出框到了所以操作最后才执行,也就是说,我并没有执行所谓的询问操作而直接根据默认状态insert到数据库了,原因很简单,因为首先执行的是服务器端,然后才执行客户端~因此此方法不能解决.
  而后,我又在网上看到了将返回值保存到session或者cookie的方法,原本应该是可以的,但是我上述几个函数都是需要传入其他参数(datarow,type_name等),因此如果使用session和cookie则这些传入参数将会取不到~
  最后,实在没办法了,就只好去问老大,后来老大苦思冥想,终于想到个小窍门————通过隐藏按钮赋值的方法把confirm的返回值重新传到前台:即在页面上放一个隐藏按钮btn_hide,width设为0,visible设为false,然后将原本save的触发事件里confirm的返回值存到btn_hide.value中,然后将insert到数据库的操作放到btn_hide的触发事件中,将需要传入的dr以及type——name放在session中,即将数据库录入的操作存放在btn_hide_Click()中,也就是通过注册隐藏按钮事件的方法,来解决传值问题~

  也许你不一定遇的到像我这种棘手的情况,但是也许你也会碰到,上述的方法并不是最佳的解决情况,一定有牛人有更好的方法解决,这里只是小白的拙见,但是也想贴出来和大家分享一下~一起进步~

2
0

.NET技术热门文章

    .NET技术最新文章

      最新新闻

        热门新闻