2012-02-29 96 views
1

我想创建一个带有CodeBehind事件和JavaScript事件的弹出对话框。我创建了一个启动以下对话框的按钮。这工作正常。jQuery对话框关闭事件没有按预期工作

<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#这样温柔您的回复..像周

感谢 安东尼

+0

两个表单都有相同的ID。这是一个禁忌。 – j08691 2012-02-29 20:16:06

+0

对不起..我把edit3中的表格改名为form2 ..这只是我放在一起的一个快速样本..这是一个oversite ..仍然没有工作.. – Anthony 2012-02-29 20:19:50

回答

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控件让你的形式发送回服务器异步。

+0

好的...我在那里一半......在对话框关闭时有没有办法让事件触发。请记住,事件将不得不传递给ShowDialog(),因为我将从几个地方调用该函数。 – Anthony 2012-03-01 13:59:55

+0

你想让事件触发CodeBehind事件吗?并在哪一页 - edit3.aspx或父窗体? – jmaglio 2012-03-01 14:25:29

+0

父窗体..我有CodeBehind发射Edit3 ..我需要做一个部分更新时,对话框返回。 – Anthony 2012-03-01 14:38:52