2012-02-29 17 views
1

CodeBehindイベントとJavaScriptイベントを使用してポップアップダイアログを作成しようとしています。私は、次のダイアログを起動するボタンを作成しました。それはうまく動作します。jQuery Dialog Closeイベントが正常に動作しない

<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> 

のでOK。これは単なるテストコードである点に注意してください。私はjavascriptのOnClientClick火災、その後、falseを返していると、ダイアログが期待通りに動作します。..閉じた場合、ダイアログでは、私は...

<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> 

を次のコードを持っています。私がtrueを返すように設定すると、ダイアログが閉じますが、これが問題の場所です。メインフォームが消えてダイアログフォームに置き換えられます。

このボタンは、コードビハインドでCloseButton_Clickを実行してからダイアログを閉じるために必要です。私は何が起こっているアンソニー

+0

両方のフォームが同じIDを持っています。それはノーではありません。 – j08691

+0

申し訳ありません..私はedit3のフォームをform2に改名しました。これはちょうど私がまとめた簡単なサンプルでした。それはオーバーサイズでした..まだ動作しません.. – Anthony

答えて

0

があなたの子フォーム(Edit3.aspx)ので、バックに掲載されていることである週のように...ので、あなたの回答で穏やかになり

おかげ をasp.netとC#に非常に新しいです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

OK ...私は途中です...ダイアログが閉じるときにイベントを発生させる方法はありますか?私はいくつかの場所からその関数を呼び出すので、イベントはShowDialog()に渡されなければならないことに注意してください。 – Anthony

+0

イベントでCodeBehindイベントを発生させますか?どのページに - edit3.aspxまたは親フォーム? – jmaglio

+0

親フォーム..私はEdit3でCodeBehind発射を持っています。ダイアログが返ってきたら部分的な更新をする必要があります。 – Anthony

関連する問題