ASP.NETページで動的に追加されたコントロール、イベント1/2ページの追加
3677 ワード
要求:ページにAddボタンがあり、クリックするたびに、ページにWebPartZoneが動的に作成されます.
注意:WebPartZoneはOnInitまたはそれ以前にしか作成できません.そうしないと、異常を報告します.
ボタンのクリックイベントはRaisePostbackEventでトリガーされることはよく知られています.これは、クリックイベントがOnLoadフェーズの後に実行されることを意味し、OnInitフェーズにはるかに遅れています.また、ViewStateはOnLoadの時に準備されています.OnInitおよび以前のフェーズではViewStateを使用することはできません.ボタンクリックイベントでWebPartZoneなどのコントロールを作成しようとすると、唯一の結果はページエラーです.OnInitでコントロールを作成すると、ViewStateの準備ができていないため、現在作成する必要がある個数(ViewStateに存在する)などのデータが取得できません.
今のところこの問題に対して私はまだ良い解決策を見つけていないで、実験を経て、やっと1つのあまり優雅ではない方案を得て、HiddenFieldを利用してデータを保存して、それから直接Requestを使います.Form["XXX"]はOnInit段階でデータを取得する.ボタンをクリックするか否かを判断するのもRequest.Formに対応するデータがあるかどうか判断します!くだらないことは言わないで、みんなコードを見てみましょう.
asp.net为控件动态添加事件
实现的功能是在网页上的Panel中动态添加一个Button,并为这个Button写一个单击事件。
动态添加控件的事件,语句:
具体的なコードは以下を参照してください.
特に注意しなければならないのは、
コントロールを追加したり、イベントを追加したりするときはif(!IsPostback){}に入れてはいけません.そうすると、一度クリックするとコントロールが消え、イベントもなくなります.
が実行されます.
1 2次ページ全文を読む
注意:WebPartZoneはOnInitまたはそれ以前にしか作成できません.そうしないと、異常を報告します.
ボタンのクリックイベントはRaisePostbackEventでトリガーされることはよく知られています.これは、クリックイベントがOnLoadフェーズの後に実行されることを意味し、OnInitフェーズにはるかに遅れています.また、ViewStateはOnLoadの時に準備されています.OnInitおよび以前のフェーズではViewStateを使用することはできません.ボタンクリックイベントでWebPartZoneなどのコントロールを作成しようとすると、唯一の結果はページエラーです.OnInitでコントロールを作成すると、ViewStateの準備ができていないため、現在作成する必要がある個数(ViewStateに存在する)などのデータが取得できません.
今のところこの問題に対して私はまだ良い解決策を見つけていないで、実験を経て、やっと1つのあまり優雅ではない方案を得て、HiddenFieldを利用してデータを保存して、それから直接Requestを使います.Form["XXX"]はOnInit段階でデータを取得する.ボタンをクリックするか否かを判断するのもRequest.Formに対応するデータがあるかどうか判断します!くだらないことは言わないで、みんなコードを見てみましょう.
private void Page_Load(object sender, System.EventArgs e)
{
Button Button1 = new Button();
Button1.CommandArgument = "b1";
Button1.Text = "Btn1";
Button1.Command += new CommandEventHandler(this.OnButton);
PlaceHolder1.Controls.Add(Button1);
Button Button2 = new Button();
Button2.CommandArgument = "b2";
Button2.Text = "Btn2";
Button2.Command += new CommandEventHandler(this.OnButton);
PlaceHolder1.Controls.Add(Button2);
Control c3 = ParseControl("
asp.net为控件动态添加事件
实现的功能是在网页上的Panel中动态添加一个Button,并为这个Button写一个单击事件。
动态添加控件的事件,语句:
Control.Command += new CommandEventHandler(this.EventFun);
具体的なコードは以下を参照してください.
特に注意しなければならないのは、
コントロールを追加したり、イベントを追加したりするときはif(!IsPostback){}に入れてはいけません.そうすると、一度クリックするとコントロールが消え、イベントもなくなります.
が実行されます.
protected void Page_Load(object sender, EventArgs e)
{
// System.Web.UI.Control ,b
Control c = ParseControl("
");
// Panel
this.Panel1.Controls.Add(c);
// myButton
Button Button = (Button)Page.FindControl("myButton");
// On_Button
Button.Command += new CommandEventHandler(this.On_Button);
}
//CommandEventArgs command
protected void On_Button(Object sender,CommandEventArgs e)
{
Response.Write("<!--
<br>alert('" + e.CommandArgument.ToString() + "');
<br>// --> ");
}
1 2次ページ全文を読む