2011-07-04 12 views
0

ダイナミックコントロールの生成と同じようにしたいのですが、コントロールをプレースホルダに置くことができました。コントロールから情報を取得しようとしたときに問題が発生しました。ハンドラ内のコントロール。 Test.aspxという
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
<asp:PlaceHolder ID="PlaceHolder2" runat="server"></asp:PlaceHolder>
ボタンonclickのプレースホルダの問題

ページの背後にあるコードで

protected void Page_Load(object sender, EventArgs e){ 
TextBox txt = new TextBox(); 
Button btn = new Button(); 
btn.OnClientClick = "button_click"; 
//btn.Attributes.Add("onClick","button_click"); I tried this way , yet didn't work 
btn.Attributes.Add("runat","server"); 
PlaceHolder1.Controls.Add(txt); 
PlaceHolder1.Controls.Add(btn);} 

ハンドラで

すなわち
ある:

protected void button_click(Object sender , EventArgs args){ 
string str = txt.Text; // I don't know if this would work , cuz this method didn't run onclick 
PlaceHolder2.Controls.Add(new LiteralControl("intered :"+str)); 
} 
たくさん回答ごとの

おかげで、コントロールにアクセスするためとして
TextBox tmp = (TextBox)PlaceHolder1.FindControl("input"); 「入力が」私はあなたが間違った方法でイベントを追加している

答えて

2

を設定するテキストボックスのIDです。

あなたはサーバー側のイベントを追加しているので、それは、のようにする必要があります:

btn.Click += new EventHandler(button_click); 

代わりbtn.OnClientClick = "button_click";これは我々が正常にJavaScript関数を追加します方法です。

+0

だが、ドロップダウンリストのための同様のハンドラは何ですか?それがリストにあるのか、各項目にあるのでしょうか? – Katia

+1

このようにする必要があります... DropDownList1.SelectedIndexChanged + =新しいEventHandler(DropDownList1_SelectedIndexChanged); –

1

OnClientClickは、クライアントサイドでJavaScript関数を実行するために使用されるJavaScriptを指します。だ

protected void myHandler(object sender, EvetArgs e)

1

btn.Click += new EventHandler(button_click);

myHandlerは、以下のメソッドシグネチャを持つ

btn.Click += myHandler;

:あなたはClickイベントを使用したい場合、あなたはそれを、このようなイベントハンドラを割り当てますコードを探しています


btn.OnClientClick = "button_click"; //btn.Attributes.Add("onClick","button_click")

用として、それはクライアントサイド・スクリプトのためにお邪魔して申し訳ありません

関連する問題