動態控制項與事件繫結不可放在 if (!IsPostBack) 區塊,否則 PostBack 時控制項消失、事件不觸發。
protected void Page_Load(object sender, EventArgs e)
{
Control c = ParseControl(" ");
Panel1.Controls.Add(c);
Button btn = (Button)Page.FindControl("myButton");
btn.Command += new CommandEventHandler(On_Button);
}
void On_Button(object sender, CommandEventArgs e)
{
Response.Write($"");
}
private void Page_Load(object sender, EventArgs e)
{
// 物件建立
var btn1 = new Button { CommandArgument = "b1", Text = "Btn1" };
btn1.Command += OnButton;
PlaceHolder1.Controls.Add(btn1);
// 字串標記
Control c3 = ParseControl(" ");
PlaceHolder1.Controls.Add(c3);
((Button)Page.FindControl("Button3")).Command += OnButton;
// ... 同理 Button4
}
void OnButton(object sender, CommandEventArgs e)
{
switch (e.CommandArgument.ToString().ToLower())
{
case "b1": Label1.Text = "Button 1"; break;
case "b2": Label1.Text = "Button 2"; break;
case "b3": Label1.Text = "Button 3"; break;
case "b4": Label1.Text = "Button 4"; break;
}
}