我是做BS的,遇到一个问题,问题是这样的:
当点击按钮后进入按钮事件处理代码段,我希望程序执行的途中弹出一个类似JS的confirm框来给用户选择"确定"还是"取消",当点击了"确定"则程序继续往下执行,点"取消"后程序中断执行。
前段时间碰到这样的问题我解决了,前几天负责另一个模块的同事辞职了,他的模块由我来修改,这次碰巧又遇到这种问题,他的页面写的比较复杂,我很难用我原来的方式去解决问题,因此求助一下各位看有没有好的解决方法,先谢谢各位了。

解决方案 »

  1.   

    OnClientClick="return confirm('继续吗?')"
      

  2.   

    像楼上用的办法就可以,如果这办法还是没能解决,可以做一个过渡页面,只用于弹出一个confirm。
      

  3.   

    js:
    if(window.confirm('是否继续?"))
    {
    //那么继续
    }
    else
    {
    return;
    }c#:
    Button1.OnClientClick="return window.confirm('是否继续?')"
      

  4.   

    2楼正解。并不是数据提交后服务器根据数据产生一个提示窗口,点确认后再继续处理。做B/S要转换一下思想,和C/S程序不一样,B/S的应用程序是stateless的,过程这样一个顺序:客户发送request->服务器处理->Response到客户。在这三个状态之间不再可能有交互。所谓的'弹出窗口'实际上是利用客户端脚本(java script)制造的'伪交互',是服务器根据上一次用户提交的数据反馈给客户端的脚本。比如你提交了一个页面,服务器根据逻辑在某个button上加了一个警告窗口的JS代码,然后反馈给你。你再点击这个button后则弹出一个警告窗,实际并没有提交要服务器,只是执行了一段JS代码。
      

  5.   

    如果是在提交到服务器的过程中,可以使用隐藏域,
    如if(confitm("?"))
    document.getElementById("id").value = 1;
    else
    document.getElementById("id").value = 0;当提交到服务器端时,Request.Form["id"].value == 1 ? 怎怎地 : 怎怎地2 ;
      

  6.   

    差不多也只能这样.
    你看一下这个例子吧.有你想要的.呵呵http://www.codeproject.com/KB/webforms/NingLiangSimpleControl.aspx
      

  7.   

    想必楼主是这样一种情况,不是点击按钮就跳出confirm框是吧!而是再进行判断满足一定条件再弹出
      

  8.   

    一般先在PAGE_LOAD里面判断满足条件,然后在注册属性
      

  9.   

        public void Alert(string message)
        {
            Response.Write("<script>alert('" + message + "');</script>");
        }    public void chkopr(bool ret)
        {
            if (ret)
            {
                Alert("操作成功!");
            }
            else
            {
                Alert("操作失败请联系程序员!");
            }
        }
    随便贴一个 当作MARK
      

  10.   

    用ajax吧
    把你所谓的程序以弹出框为分割点分成两部分。先用ajax执行弹出框以前的部分,然后弹出框,用户选择。然后再执行另外一部分。
      

  11.   

    ((Button).Attributes.Add("onclick", "javascript:return confirm('你确认要删除?')")
      

  12.   

    这个问题好后台删除新闻没有什么区别.....点确定就删除就否就不执行删除.....可以用cS+js来做.我的别一个方法是用js+webservice(asp.net ajax)来做的...贴一个我的js函数给你看一下:
    function removeitem(参数....)
    {
      if(confirm('确定删除?'))
      {
          webservice类名.方法名(参数,回调函数);
      }
    }
    function 回调函数(result)
    {
      别一个webservice方法;
    }
    ....当然这个对话框还可是是自己定议的当然显示和隐藏这个对话框的方法也就不同了....
      

  13.   

    刚想告诉大家我用ajax的ModalPopup控件实现了功能,上来就看到了20楼的朋友也提到了这样做,正如20楼的朋友所说,我把原来一个按钮中执行的代码分到两个按钮事件里去分开执行了,功能实现了,但没写几行代码,^_^谢谢大家的指点!
      

  14.   

    保存当前执行的状态到ViewSate或者Session或者用JSon返回到客户端,客户端弹出窗口让用户确认,返回确认结果到服务端,服务端根据返回值和上次保存的执行状态继续执行
      

  15.   

    用了我N个小时做了个Demo,希望有用,使劲给分哈<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>    <script type="text/javascript" src="YuiBuilds/yahoo-dom-event/yahoo-dom-event.js"></script>    <script src="YuiBuilds/json/json.js" type="text/javascript"></script>    <script src="YuiBuilds/yahoo/yahoo.js" type="text/javascript"></script>    <script src="YuiBuilds/event/event.js" type="text/javascript"></script>    <script src="YuiBuilds/connection/connection.js" type="text/javascript"></script>    <style type="text/css">
            body
            {
                margin: 0;
                padding: 0;
            }
        </style>
    </head>
    <body>
        <form id="form1" runat="server">
        <table id="tbl">
            <tr>
                <td>
                    <div id="jsonTestPannel">
                        <h2>
                            Json test</h2>
                        <div id="WorkPannel">
                        </div>
                        <input type="button" value="Send a GET Request" onclick="makeRequest();" />
                    </div>
                </td>
            </tr>
        </table>
        <br />    <script type="text/javascript">        var workObj = [];
            var transactionObject = {
                start: function(type, args) {
                },            complete: function(type, args) {
                },            success: function(type, args) {
                    try {
                        workObj = YAHOO.lang.JSON.parse(args[0].responseText);
                    }
                    catch (x) {
                        alert("JSON Parse failed!");
                        return;
                    }                WorkPannel.innerHTML += "State:" + workObj.WorkState;
                    WorkPannel.innerHTML += "<br/>";
                    WorkPannel.innerHTML += "Message:" + workObj.Message;
                    WorkPannel.innerHTML += "<br/>";
                },            failure: function(type, args) {            },            abort: function(type, args) {
                }
            };
            var handleSuccess = function(o) {
            };        var handleFailure = function(o) {
            };
            var callback = {
                success: handleSuccess,
                failure: handleFailure,
                customevents: {
                    onStart: transactionObject.start,
                    onComplete: transactionObject.complete,
                    onSuccess: transactionObject.success,
                    onFailure: transactionObject.failure,
                    onAbort: transactionObject.abort
                },
                argument: {}
            };        var sUrl = "WorkFlowHandler.ashx?WorkObject=";        function makeRequest() {
                var request = YAHOO.util.Connect.asyncRequest('GET', sUrl + YAHOO.lang.JSON.stringify(workObj), callback);
            }
        </script>    </form>
    </body>
    </html>
      

  16.   

    上面那个是页面文件这个是WorkFlowHandler.ashx   /// <summary>
        /// Summary description for $codebehindclassname$
        /// </summary>
        [WebService(Namespace = "http://tempuri.org/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        public class WorkFlowHandler : IHttpHandler
        {
            StringBuilder messageBuilder = new StringBuilder();
            public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType = "text/plain";
                DoWork(context);
            }        private void DoWork(HttpContext context)
            {
                JavaScriptSerializer jss = new JavaScriptSerializer();
                WorkObject workObj = null;
                try
                {
                    workObj = jss.Deserialize<WorkObject>(context.Request.Params["WorkObject"]);
                }
                catch
                {
                }            int workState = 0;
                if (workObj == null)
                {
                    workObj = new WorkObject();
                    workObj.WorkState = workState;
                }
                else
                {
                    workState = workObj.WorkState;
                }
                for (int i = workState + 1; i <= 100; i++)
                {
                    messageBuilder.AppendLine(i.ToString());
                    if (i % 10 == 0)
                    {
                        workObj.WorkState = i;
                        break;
                    }
                }
                workObj.Message = messageBuilder.ToString();
                context.Response.Write(jss.Serialize(workObj));
            }        public bool IsReusable
            {
                get
                {
                    return false;
                }
            }        [Serializable]
            public class WorkObject
            {
                string m_Message;
                int m_WorkState;            public int WorkState
                {
                    get { return m_WorkState; }
                    set { m_WorkState = value; }
                }            public string Message
                {
                    get { return m_Message; }
                    set { m_Message = value; }
                }
            }
        }