asp.net - 無効 - 更新パネルの更新後にJavascriptを実行するにはどうすればよいですか?




updateprogress 使い方 (4)

私は変更することはできません.ascxコントロールにいくつかのCSSを設定するpageLoad関数があります。 ページの読み込みには問題ありませんが、更新パネルでコントロールが更新されると、CSSは適用されなくなります。 ページの更新後に関数を再実行するにはどうすればよいですか?

 $(function() {
        $("textarea").attr("cols", "30");
        $("input.tbMarker").css({ "width": "100px" }).attr("cols","25");
    });

これは明らかに最初のページの読み込み時にのみ実行されます。 更新後にどのように実行できますか?

https://code.i-harness.com


Script Managerを配置したのと同じフォームにコードを追加します。

コードの背後にある:

protected void Page_Load(object sender, EventArgs e)
{
    if (ScriptManager1.IsInAsyncPostBack)
    {
        StringBuilder sb = new StringBuilder();
        sb.Append("<script language='javascript' type='text/javascript'>");
        sb.Append("Sys.Application.add_load(func);");
        sb.Append("function func() {");
        sb.Append("Sys.Application.remove_load(func);");
        sb.Append("alert('I am Batman!');");
        sb.Append("}");
        sb.Append("</script>");
        ScriptManager.RegisterStartupScript(this, GetType(), "script", sb.ToString(), false);
    }
}

UpdatePanelが次のように終了するたびに、クライアント側のコード(JavaScript)でイベントにバインドすることもできます。

        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(){myFunction();});

したがって、この場合myFunction(); UpdatePanelポストバックが発生するたびに呼び出されます。 ページがロードされたときにこのコードを実行すると、関数は正しい時刻に呼び出されます。


更新パネルのポストバック中、サーバーコードでClientScriptManagerを使用して、新しいスクリプトをページに追加します。次のようになります。

ClientScriptManager.RegisterStartupScript(
       typeof(page1), 
       "CssFix", 
       "javascriptFunctionName()", 
        true);

3番目の引数にマッチする名前付き関数でJavaScriptをカプセル化し、ポストバックが返ったときに実行する必要があります。


最も簡単な方法は、javascriptコードでMSAjax pageLoadイベントを使用することです。

<script> 
   ///<summary>
   ///  This will fire on initial page load, 
   ///  and all subsequent partial page updates made 
   ///  by any update panel on the page
   ///</summary>
   function pageLoad(){ alert('page loaded!') }  
</script>

私は何度もそれを使用しています、それは魅力のように動作します。 最も重要なことは、document.ready関数(これは、ページがDocument Object Model(DOM)の実行準備が完了した後に一度だけ実行されます)と混同しないでください。ただし、updateLoadイベントは、リフレッシュ。

ソース: 更新パネルAJAX asp.netの後にスクリプトを実行する





updatepanel