2011-07-15 6 views
1

私は、いくつかのJavaScriptを連結して登録するためにstringbuilderオブジェクトを使用しています。私の質問は、ポストバックが発生したときにジャバスクリプトをクリアするためにクライアントサイドのJavaScriptを使用する方法があるかどうかです。私は、scriptmanagerを使用して配列を登録するとき、動的配列をすべて空にしなければならないことを発見しました。そして、基本的に私は動的にページに追加しているjavascriptコードで同じことをしたいのですか? javascriptにはキー(「ランダムリスト」)がありますので、参照する必要があります。RegisterStartUpScript - ポストバックが発生したときにコードをクリアする

ScriptManager.RegisterStartupScript(UpdatePanel_MyPublications, typeof(UpdatePanel), "randomlists", sb_javascript.ToString(), true); 

私はもう少し説明しましょう。私が登録しているjavascriptには、いくつかの変数が含まれています。この場合、動的に読み込まれる他の配列もあります。現在のところ、これらの配列は再インスタンス化されずに再配置されるのではなく、多くの問題が魔法的に停止するというコードをクリアして再登録することができます。

ありがとうございます。

答えて

0

同じ名前を使用してスクリプトを再登録すると、別のコンテンツ(つまり異なる文字列ビルダー)になるはずです。

aspxページで、「Button1」というボタンを追加し、次のaspx.csを概念の証明として使用します。ページを読み込んだ後にボタンをクリックすると、警告が「1」になってからポストバックされます。ボタンをもう一度クリックすると、アラート「2」が表示され、ポストバックで変数を再定義できたことが示されます。ページaspx.cs

:これが機能しない場合、我々はあなたの特定のシナリオを見てみることができるように

protected void Page_Load(object sender, EventArgs e) 
    { 
     Button1.Attributes.Add("onclick", "alert(test);"); 
     var sb_javascript = new StringBuilder(); 
     var sb_javascriptPostback = new StringBuilder(); 
     sb_javascript.Append("var test='1';"); 
     sb_javascriptPostback.Append("var test='2';"); 
     if ((Page.IsPostBack)) 
     { 
      ScriptManager.RegisterStartupScript(UpdatePanel_MyPublications, typeof(UpdatePanel), "randomlists", sb_javascriptPostback.ToString(), 
               true); 
     } 
     else 
     { 
      ScriptManager.RegisterStartupScript(UpdatePanel_MyPublications, typeof (UpdatePanel), "randomlists", 
               sb_javascript.ToString(), 
               true); 
     } 

    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     Response.Write("PostBack"); 
    } 
} 

、あなたのコードを投稿してください。

関連する問題