【问题标题】:Button doesn't postback inside jQuery dialog inside UC按钮不会在 UC 内部的 jQuery 对话框中回发
【发布时间】:2009-09-11 11:14:03
【问题描述】:

我正在开发一个用户控件,它在 jQuery Dialog 中有一个 asp.net 按钮,但是当我按下按钮时没有任何反应,我的意思是它不会在服务器端调用按钮单击事件,我已经尝试过

dlg.parent().appendTo(jQuery("form:first")); 

但它也没有帮助我,是否有可能在 asp.net UserControl 中实现这一点? 另外我想知道我是否可以在对话框中使用 UpdatePanel?

【问题讨论】:

  • 但是我也试过firefox 3.5.2,还是不行。

标签: asp.net jquery user-controls dialog


【解决方案1】:

你可以把按钮做成对话框按钮,在页面上放一个asp.net按钮,ID为HiddenButton,并用样式为display:none;的div包裹起来

所以按钮是不可见的。 (不得为 Visible="false" 以便呈现按钮)

在对话框javascript中添加一个按钮,具有点击隐藏按钮的效果

  jQuery("#dialog").dialog({
        buttons: {
            'ButtonText': function() {
                //save the session
           __doPostBack('<%# HiddenButton.ClientID %>', '')
                jQuery(this).dialog('close');
            }
        }
    });

并为隐藏按钮添加一个asp点击处理程序

<div style="display:none;">
    <asp:Button ID="HiddenButton" OnClick="HiddenButton_Click" ></Button>
<div>

点击对话框按钮时,服务器端的 Click 事件将触发

希望这有助于我一直使用这种模式

【讨论】:

    【解决方案2】:

    我怀疑这可能与 ASP.NET 无法在表单中找到按钮有关。

    在 jQuery 中使用 .live 事件设置 - 在使用 .live 创建对话框之前绑定事件,它应该可以工作...

    Live events in jQuery

    你最终会在你的 document.ready 函数中得到类似的东西:

    
    $("#btn").live("click", function(){
      // Do something
    });
    
    
    $("#dialog").dialog({
        ... 
    }
    

    【讨论】:

      【解决方案3】:

      我有同样的问题。我最终将按钮从对话框中拉出,用 css 将其隐藏,然后从对话框上的 close 事件中触发它(我稍后会更干净地执行此操作,但这至少说明了问题)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多