none
Dialog 弹出 Div 引发的问题 RRS feed

  • 问题

  • <form ID ="form">
    <div id="dialog_div" style="display:none;" >
         <asp:Button ID="btn" runat="server" Text="确定"  OnClientClick= "Get()"/>
    </div>
    </form>   
    
    


        function Get()
        {
                $("#dialog_div").css("display","block");
                $('#dialog_div).dialog({
                title: '',
                width: 720,
                height: 620,
                modal: true,
                position: ['center', 100]});         
        }

    当我弹出Dialog的时候发现Button的服务器事件不触发。找了两个解决方案但是都有后续引发的问题。

    第一种是把dialog后Div移回Form

    $('#dialog_div').parent().appendTo('#form);     

    这样以后服务器事件就能响应了但是响应后Dialog会立刻被关闭。我在后台又重新弹出可是效果不好,有没有办法保持住呀?

    第二种是用AjaxPor.2

            [AjaxPro.AjaxMethod(HttpSessionStateRequirement.ReadWrite)]
            public string Set()
            {
                return "aaaaa";
            }


        function Get() {
            alert(WebClient.Default.Set().value);
        }

    服务端能响应Set()但是无法获取到页面控件,提示控件未被实例化。虽然可以在Load的时把页面的控件赋给后台,但是那也只是初始状态的时候。我需要的是一个时时获取页面控件状态的。

    AjaxPro.AjaxMethod 貌似对HTTP请求进行了拦截,并不会按asp.net页面生命周期顺序执行,所以服务端在Set()内获得控件是NULL

    2012年6月16日 13:59

答案

  • 这个问题的关键是你现在使用 Ajax,但是 button 控件生成的是提交按钮,导致页面整体刷新。

    你可以参考一下我的这两篇文章:

    使用 jQuery UI Dialog

    jQuery UI dialog 的使用


    冠军

    2012年6月16日 23:12
  • 我也遇到你这样的问题,想把弹出对话框的内容直接提交到后台似乎很麻烦,都是用的AJAX提交,比较搞笑的是,JS也获不到值,原因是 <div id="dialog_div" style="display:none;" >
        
    <asp:Button ID="btn" runat="server" Text="确定"  OnClientClick= "Get()"/>
    </div>
    代码还在原来的位置,
    Dialog里复制了一份,页面中会出现两个BTN,我是用全局变量把内容保存起来,然后移到Dialog里,确定后再把全局变量返回到隐藏DIV中去
    2012年6月21日 3:30

全部回复