asp.net在后台弹出confirm确认对话框并获取用户选择的值做出相应的操作
在asp项目中,这种情况是经常出现的,前段时间通过查找资料以及自己尝试,找到一种解决方案,但是不知是否有更好的方案,以后发现再进行记录。
一.思路
在本次项目中,在一个函数中需要让用户判断,并根据用户的选择进行相关的操作,最开始是希望在用户需要确认的地方弹出确认框,然后程序暂停,用户选择之后再继续运行,于是在需要确认的地方插入js代码,但是通过调试发现,在函数中间插入弹出对话框的js代码,整个函数执行完毕之后才会弹出确认对话框,当然也就不能暂停根据用户的选择执行后面的代码,之后也找不到解决方法。后面换了一种做法,首先在页面中放一个隐藏控件,将用户选择的值赋给它,然后再在页面中放一个按钮,用户选择之后触发该按钮将值传给后台。刚开始没有添加该按钮,直接在同一个函数中区获取值发现每次都是获取到上一次选择的结果,然后才意识到用户做出选择之前就已经向后台返回,后台通过js弹出的对话框是处于另外一个对话中,在对隐藏控件进行赋值之前,主函数就已经返回,所以只能通过js再次触发按钮事件(当然其它事件也可以)返回用户的选择值。
这样只能在另一个事件函数中进行需要的处理,但是主函数中的变量值都会清空,所以需要将在逻辑上要在一次对话中用到和变量设置为static变量。
还有一个问题就是,通过js触发按钮事件,准确说我的情况是用户在操作界面鼠标点击触发的事件函数中插入js代码触发返回隐藏控件值的按钮事件,发现在js触发按钮事件函数中更新其它控件(跟新gridview的数据)的代码以及使用公共类的消息弹出框都无效了。后来发现如果都通过js触发就可以了,也就是说最开始的触发一系列操作的控件事件函数也通过js触发,那么在该函数中插入js触发其它控件事件函数就不会出现上述问题。
二.实现
1.在页面中插入隐藏控件HiddenField以及用于返回值的按钮控件,设置按钮style="display:none;"。注意:如果直接设置visible属性为false,那么你会发现运行的时候找不到该按钮而出错,这也是我自己遇到的问题。
2.在需要用户去确认的地方插入js代码:
string js = string.Format("document.getElementById('{0}').value=confirm('sure?');document.getElementById('{1}').click();", hid.ClientID, hidBtn.ClientID);
ClientScript.RegisterStartupScript(GetType(), "confirm", js, true);
这里也有一点要提一下,如果想要scrip的UpdatePanel中的控件函数执行插入的js代码最好使用ScriptManager.RegisterStartupScript(UpdatePanelID,UpdatePanelID.GetType(), string key, string js, true);本来开始是使用ClientScrip不可以执行的,但是后来又可以了,不知道为啥,先记录一下。
3.在hidBtn的click事件函数中得到用户确认框的选择值即隐藏控件hid的值,执行先关的操作。
asp.net在后台弹出confirm确认对话框并获取用户选择的值做出相应的操作的更多相关文章
- 每日学习心得:CustomValidator验证控件验证用户输入的字符长度、Linq 多字段分组统计、ASP.NET后台弹出confirm对话框,然后点击确定,执行一段代码
2013-9-15 1. CustomValidator验证控件验证用户输入的字符长度 在实际的开发中通常会遇到验证用户输入的字符长度的问题,通常的情况下,可以写一个js的脚本或者函数,在ASP ...
- 转 如何在调用WCF服务之前弹出一个确认对话框
自定义InteractiveChannelInitializer(InvocationConfirmationInteractiveChannelInitializer)定义如下.我们在BeginDi ...
- Asp.Net后台弹出确认提示窗Confirm
前端js代码: function MyConfirm(message, guid) { if (confirm(message) == true) { document.getElementById( ...
- [转] 在Asp.net前台和后台弹出提示框
一.在前台弹出提示框 1.点击"A"标记或者"控件按钮"弹出提示框 <asp:LinkButton ID="lbtnDel" runa ...
- asp.net 后台弹出提示框
1.后台弹出提示信息方法 Response.Write("<scripttype="text/javascript">alert('你所查询的数据不存在!') ...
- 【转载】asp.net 后台弹出提示框
感觉这种最好用: public void showMessage(string str_Message) { ClientScript.RegisterStartupScript(this.GetTy ...
- T100弹出是否确认窗体方式
例如: IF NOT cl_ask_confirm('aim-00108') THEN CALL s_transaction_end(') CALL cl_err_collect_show() RET ...
- 关于abp中使用的sweetalert对话框组件的confirm确认对话框中的一个坑
今天修改了一个功能,限制删除用户,在删除的时候不满足条件的时候提示用户原因,使用的sweet alert组件. abp框架前端集成了sweet alert 对http请求的error做了全局处理,我在 ...
- jquery仿alert提示框、confirm确认对话框、prompt带输入的提示框插件[附实例演示]
jquery仿alert提示框.confirm确认对话框.prompt带输入的提示框插件实例演示 第一步:引入所需要的jquery插件文件: http://www.angelweb.cn/Inc/eg ...
随机推荐
- ASP.NET 动态编译、预编译和 WebDeployment 项目(转)
概述 在 Web 服务器上,既可以部署源文件,也可以部署编译后程序集. 若部署源文件,则当用户访问时,Web 应用程序会被动态编译,并缓存该程序集,以便下次访问. 否则,若部署程序集,Web 应用程序 ...
- VS2013以管理员身份使用
Win8系统: 1.将C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe改为以管理员身份运行. 2.将 ...
- Asp.net mvc4 + HighCharts + 曲线图
前端代码: @{ Layout = null;}<!DOCTYPE html><html><head> <title></title> &l ...
- C#按键打开文件选择对话框,并把选择好的路径保存/显示到textBox
1.选择文件夹 FolderBrowserDialog fbd = new FolderBrowserDialog(); fbd.SelectedPath = "D:";//默认路 ...
- sdsdd
while(scanf("%d",&n)!=EOF) { res=-; level(tmp,n,res,); printf("%d/n",res); }
- mongodb的连接问题,绑定IP惹的祸
刚刚安装好了 mongodb .对着 mongodb in action上的例子敲了下面的代码: public class TestDBConnect { @Test public void test ...
- C语言变量的存储类别
我们知道,从变量的作用域(即从空间)角度来分,可以分为全局变量和局部变量. 从另一个角度,从变量值存在的作时间(即生存期)角度来分,可以分为静态存储方式和动态存储方式. 静态存储方式:是指在程序运行期 ...
- centos 图形界面和命令行界面切换
如果在图形界面下,按:Ctrl+Alt+F2进入命令行登录界面 切到root用户下, su root password 1, 关闭图形界面: init 3 关闭图形界面(XServer服务也会关闭) ...
- Android和FTP服务器交互,上传下载文件(实例demo)
今天同学说他备份了联系人的数据放在一个文件里,想把它存到服务器上,以便之后可以进行下载恢复..于是帮他写了个上传,下载文件的demo 主要是 跟FTP服务器打交道-因为这个东东有免费的可以身亲哈 1. ...
- linux系统下svn服务器操作命令
linux系统下svn服务器操作命令 .输出指定文件或URL的内容. svncat 目标[@版本]…如果指定了版本,将从指定的版本开始查找. svncat -r PREV filename > ...