2012-02-09 14 views
0

AspxページのjQueryダイアログを使用してユーザーコントロール(Memo.ascx)をポップアップとして開こうとしています。ASPXページのjQueryダイアログを使用してユーザーコントロールをポップアップとして開く

ASPX:

<td> 
    <asp:ImageButton ID="btnMemo" runat="server" AlternateText="Memo" CausesValidation="false"  
    OnClientClick="PrepareNOpenDialog()" ClientIDMode ="Static" /> 
    <div id="divMemoInfo" title="Memo"></div> 
</td> 

はJQuery:

$(function() { 
     PrepareNOpenDialog(); 
}); 

function PrepareNOpenDialog() { 

    $('#divMemoInfo').dialog(); //init the dialog (consider div as a dialog) 
    $('#divMemoInfo').dialog('close'); //prevent the dialog from showing after initiation 

    $('#divMemoInfo').load('Memo.ascx'); 

    dialogOptions = { 
     modal: true 
       , buttons: { 
        'Close': function() { 
         $(this).dialog('close'); 
        } 
       } 
       , minWidth: 400 
       , minHeight: 200 
       , width: $(window).width()/3 //'auto' 
       , height: 'auto' 
    }; 

    //open dialog when image clicked 
    $('#btnMemo').click(function() { 
     $('#divMemoInfo').dialog(dialogOptions); 
    }); 

} 

私はonClientclick = OpenMemo()

してくださいアドバイスでオブジェクト予想エラーを取得しています。

おかげ

BB

答えて

1

OpenMemo(と呼ばれる全くjavascript関数はありません)(余談大会は、関数名は小文字開始指示など)

次のような機能を作成してみてください:

function OpenMemo(){  
     $('#divMemoInfo').dialog("open"); 
} 
3

OnClientClick = "OpenMemo()"と設定している2つの問題がありますが、OpenMemo()JavaScript関数が定義されていません。あなたはすでに "btnMemo"のクリックハンドラを持っているようですので、あなたのOnClientClick = "OpenMemo"を削除してください。

あなたの第二の問題は、この行は動作しません

$('#divMemoInfo').load('Memo.ascx'); 

です。ロードメソッドでは、コンテンツを取得できるURLが必要です。 Memo.ascxをaspxファイルにラップし、aspxファイルのURLでloadを呼び出す必要があります。 Memo.ascxの内容だけが必要な場合は、呼び出しが完了したときにカプセル化されている要素を選択します。

+0

ありがとうございます。私は2番目の問題に悩まされています。いくつかの例を投稿したり、私がこれに対する解決策を見つけることができるソースに私を案内してください。 – BumbleBee

+1

ここにまともな例がありますhttp://www.aspxtutorial.com/post/2011/01/02/Load-aspnet-web-user-control-using-jQuery-and-web-method.aspx – sarvesh

関連する問題