2011-10-30 13 views
1

私は、UpdatePanelと外部の両方で複数の場所で使用される手作りのツールバーコントロールを使用しています。いくつかのjQueryに依存してボタンを設定しています。アセンブリに組み込まれた独自の起動スクリプトを持っています。ASP.NET UpdatePanel:すべての更新時にクライアントスクリプトを実行する方法

私が問題を抱えているのは、ツールバーが更新パネルにあるときに起動スクリプトが適切なタイミングで実行されていることです。これは、更新パネルのマークアップの隠しパネルで宣言されているため、更新パネルが作成されたときに作成され、読み込まれます。しかし、実際にはレンダリングされることはありません。ユーザーがいくつかのことを行い、非表示のパネルが表示されるまでです。

更新パネルが更新されるたびに起動スクリプトが実行されるようにします。 (理想的には、ツールバーが表示されていればそれを行うだけですが、必要ならば「すべての更新」を行います)。しかし、必要なときには、更新パネルの外でもツールバーが機能するようにしたい行うべきことは、ドキュメントの.ready()ハンドラにフックすることです。

ツールバーは、更新パネル内にあるかどうかにかかわらず、サーバー側から(私が知る限り)知ることはできませんが、必要なJavaScriptを確実にする責任があります。

ありがとうございました。

ETA:答えはthis questionです。これは、更新パネルにあるかどうかにかかわらず、ツールバーで機能します。みなさん、ありがとう!

+0

このことができますかどうかわからないが、私はあなたのUpdatePanelはScriptManager.GetCurrent(ページ).IsInAsyncPostBackメソッドを使用してポストバックが発生したかどうかをサーバー側で伝えることができると思います。それはあなたの場合に働くでしょうか? –

+0

@JasonTuran Hmm。たぶん、それの音から、ちょうど、更新パネルが戻ってきたと私に教えてくれるだろう、戻って投稿したパネルが私のコントロールの祖先だったかどうかではない。そのためには、.Parentプロパティの階層を上る必要があると思います。でもありがとう! –

答えて

0

もし私が間違っていたら私を訂正してください。ただし、UpdatePanel内のjQueryツールバーは、updatepanelが更新されるたびに実行されるべきだと思います。サーバー側では、非同期ポストバックかどうかを判断できます。それが実行される更新パネル内でいくつかのjavascriptを書くことができます。リテラルコントロールを使用して、更新パネル内のプレースホルダに読み込むことができます。以下のような何か...

public void WebForm1_OnLoad(Object sender, EventArgs args){ 


    if(ScriptManager.GetCurrent(Page).IsInAsyncPostBack){ 
     var con = new LiteralControl("INSERT javascript here that would call jquery method"); 
     this.placeHolder.Controls.Add(con); 
    } 
} 
+0

問題を解決した別の質問に回答が見つかりました。しかし、あなたの返信に感謝します!私はあなたに質問に答えるための信用を与えています。ありがとうございました! –

+1

アン:あなたが結果にリンクを投稿した場合、他の人にとっては役に立ちます。 – Tommy

関連する問題