更新パネル内のコンテンツを変更するボタンがあるとします。
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = "New Text";
}
また、UpdatePanel が更新された後、クライアント側でいくつかのコードを実行したいと考えています。ScriptManager.RegisterClientScriptBlock
私の最初のアイデアは、またはを実行することRegisterStartupScript
です:
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = "New Text";
var x = getSomeDatabaseQueryResultBasedOn(TextBox1.Text, ...);
ScriptManager.RegisterStartupScript(this, typeof(WebForm1), "SomeKey",
"/* this is my script, using `x` */", true)
}
ただし、RegisterStartupScript のドキュメントには次のように記載されています。
このメソッドを使用して、非同期ポストバックが発生するたびに含まれるスタートアップ スクリプト ブロックを登録します。
「非同期ポストバックが発生するたびに」このコードを実行したくありません。今だけ実行したい(ブラウザで制御が戻った後)。Button2 がクリックされた場合は、スクリプトを実行したくありません。また、Button1 が再度クリックされた場合は、異なる可能性があるため、新しいスクリプトを実行しx
たいと考えています。残念ながら方法は見つかりませんでした。ScriptManager.ExecuteOnce
そのような方法はありますか?または、のドキュメントを誤解しただけRegisterStartupScript
ですか?