2011-01-12 6 views
1

私は問題を簡単に説明します。正確には私がやろうとしていることではありませんが、アイデアは同じです。ここに問題があります:
私は、 。私はクエリ文字列からいくつかのIDを取得し、そのidを持つボタンを作成し、イベントをクリックしてイベントハンドラを動的に追加し、placeholder.Iにボタンを追加するid-sのリストをセッションに保存し、ページロードメソッドでこれらのボタンを再作成し、 ID-Sのplaceholder.OneはCurrentIdあり、それはまたsession.Buttonsに保存されているクリックハンドラ私は他の異なるボタンのテキストプロパティを設定するボタンを作成するときに、ページの読み込みで、このページのロード前にボタンクリックイベントハンドラ

Button b=(Button)sender; 
Session["CurrentId"]=Convert.ToInt32(b.ID); 

ような何かを行います場合はid==Convert.ToInt32(Session["CurrentId"]) id-sのリストがsession.Butから取得されている問題は、ページの負荷の後にクリックイベントハンドラが呼び出され、ページの負荷でボタンを作成すると、セッションのCurrentIdはclickイベントハンドラによってチャネルされていません。あなたはこの状況に対する解決策を提案しますか?

答えて

1

クリックイベントが発生した後に動的に作成したボタンを更新しようとしているようです。説明したように、クリックイベント内のボタンテキストを変更するだけではどうですか?

すなわち

protected void button_Clicked(object sender, EventArgs e) 
{ 
    ((Button)sender).Text = "Custom text for active button"; 
} 

また、あなたは常にコントロールのクリックイベントの後に発生したが、コントロールが戻ってダウンし、クライアントに提供される前に、PreRenderイベントのボタンを更新することができます。

+0

ありがとう、PreRenderは解決策です。 – unknown

+1

@unknown:ASP .Netページのライフサイクルを正しく理解していることを確認してください。これらのタイプの問題については非常に重要です。 "シルバー"の頭字語を使用して、ステージを簡単に覚えてください。あなたはそれについてここで読むことができます:http://www.codeproject.com/KB/aspnet/ASPNET_Page_Lifecycle.aspx –

関連する問題