jQuery对话框关闭事件未按预期工作

时间:2012-02-29 20:05:27

标签: jquery asp.net dialog jquery-ui-dialog

我正在尝试使用CodeBehind Events和JavaScript事件创建一个弹出对话框。我创建了一个按钮,启动以下对话框。这很好。

<script type="text/javascript">

    function ShowDialog(aPage, aWidth, aHeight, aTitle) {
        var $popupURL = aPage;
        var $popupDv = $("#resultDiv");

        jQuery.ajax({ url: $popupURL,
            cache: false,
            success: function (html) {
                $popupDv.empty().append(html);

                $popupDv.dialog({
                    width: aWidth,
                    height: aHeight,
                    modal: true,
                    title: aTitle,
                    draggable: false,
                    resizable: false
                });
            }
        });
    }

</script>

按钮代码:

<form id="form1" runat="server">
<div>
    <div id="resultDiv">
    </div>
    <input id="Edit1Button" type="button" value="Edit 1" onclick="ShowDialog('edit3.aspx?ID=1', 600, 400, 'Hello Edit 1')" />
</div>
</form>

请记住,这只是测试代码..好吧,点击按钮后弹出一个对话框。在对话框中,我有以下代码..

<form id="form2" runat="server">
<div>
    <h1>
        Edit Dialog 3</h1>
    <asp:Button ID="CloseButton" runat="server" Text="Close" OnClick="CloseButton_Click"
        OnClientClick="$('#resultDiv').dialog('close'); return true;" />
</div>
</form>

如果我返回false,那么只需javascript OnClientClick触发并关闭对话框..按预期工作。如果我设置返回true,对话框会关闭,但这就是问题所在。主窗体消失,并被对话框形式替换..

我需要这个按钮来执行代码隐藏中的CloseButton_Click然后关闭对话框。我对asp.net和C#都很陌生,所以要温和你的回答......比如周

由于 安东尼

1 个答案:

答案 0 :(得分:0)

发生的事情是,由于您的子表单(Edit3.aspx)正在回发到Web服务器,因此ASP.NET会发回Edit3.aspx的响应 - 而不是您的初始表单。为了实现您的目标,您必须使用异步回发到服务器。这可以通过将Edit3.aspx表单更改为以下内容来完成:

<form id="form2" runat="server"> 
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<div> 
<h1 runat="server" id="edit3"> 
    Edit Dialog 3</h1> 
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button ID="CloseButton" runat="server" Text="Close" OnClientClick="$('#resultDiv').dialog('close'); return true;" /> 
</ContentTemplate>
</asp:UpdatePanel>
</div> 

ScriptManager控件和UpdatePanel控件允许您的表单异步回发到服务器。