asp在后台弹出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的值,执行先关的操作。

时间: 2024-09-30 00:12:42

asp在后台弹出confirm确认对话框并获取用户选择的值做出相应的操作的相关文章

Asp.Net后台弹出确认提示窗Confirm

前端js代码: function MyConfirm(message, guid) { if (confirm(message) == true) { document.getElementById("Hidden1").value = guid; } else { document.getElementById("Hidden1").value = ""; } //form1.submit(); form1.submit(); } 后台C#代码

删除数据时弹出一个确认对话框

使用js实现点击按钮删除数据时弹出一个确认是否删除的对话框: <input type="button" class="wz2 btn" value="删除" onClick="sc('{$vo.name}','__URL__/delete?aid={$vo.id}')"/> <script type="text/javascript"> function sc($name,$ulr)

【转载】asp.net 后台弹出提示框

原文转载:http://www.cnblogs.com/luqian5588/p/3228225.html 感觉这种最好用: public void showMessage(string str_Message) { Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "tishi","<script type='text/javascript'>alert('你所查询的数据不存在!');<

ASP.net后台弹出消息对话框的方法!【转】

在winform后台,我们通过MessageBox.show(“消息")的方式来返回后台信息,在webform后台,我们通过Response.write(”消息")来返回后台消息,但这样需要将消息值以字符串形式显示到前台页面,是否有类似于MessageBox.show("消息")的方式弹出信息呢.我们会很快想到javascript的alert方法.通过在后台调用js来实现alert的调用.用法为:Response.write("<script>

Gridview弹出删除确认对话框

实现方法: 双击GridView的OnRowDataBound事件:在后台的GridView1_RowDataBound()方法添加代码,最后代码如下所示: protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e){        //如果是绑定数据行         if (e.Row.RowType == DataControlRowType.DataRow)        {          

DetailsView控件弹出删除确认对话框

方法一:添加事件代码 protected void DetailsView1_ItemCreated(object sender, EventArgs e) { int cc = DetailsView1.Controls[0].Controls.Count; LinkButton lb=(LinkButton)DetailsView1.Controls[0].Controls[cc-2].Controls[0].Controls[0]; lb.Attributes.Add("onclick&q

[转] 在Asp.net前台和后台弹出提示框

一.在前台弹出提示框 1.点击“A”标记或者“控件按钮”弹出提示框 <asp:LinkButton ID="lbtnDel" runat="server" OnClientClick='<%# "if(!confirm("你确定退订吗?"))return false;"%>' Text="删除"/> 2.方法二: <asp:LinkButton ID="lbtnDel

JS弹出框、对话框、提示框,JS关闭窗口、关闭页面和JS控制页面跳转

一.JS弹出框.对话框.提示框 //====================== JS最常用三种弹出对话框 ======================== //1弹出对话框并输出一段提示信息 function ale() { //弹出一个对话框 alert("提示信息!"); } //2弹出一个询问框,有确定和取消按钮 function firm() { //利用对话框返回的值 (true 或者 false) if (confirm("你确定提交吗?")) { a

ASP.NET实现弹出框真分页将复选框选择的数据存到数据库中(一)

ASP.NET实现弹出框真分页将复选框选择的数据存到数据库中,这个问题分一下几步走 1.将弹出框真分页后复选框选择的数据保存. 2.将弹出框保存的数据传到父页面上. 3.将数据在父页面上显示. 4.点击保存将信息存入数据库中. 首先来第一步将弹出框真分页后复选框选择的数据保存. 思路很简单就是先真分页,然后在点击下一页的时候扫描这一页所有点击复选框的数据保存到一个变量数组中.下面就是主要代码: ASP代码: <%@ Page Language="C#" AutoEventWire