还是动态添加控件 触发事件
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace WebApplication1
{
/// <summary>
/// Dy01 的摘要说明。
/// </summary>
public class Dy01 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.HtmlControls.HtmlForm Form1;
private static bool AddIt = false;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
//点了添加按钮之后不会马上添加下拉框 应为Page_Load在ButtonClick之前执行, AddIt还是上次的值
//要想控件能触发事件 必须在PageLoad事件之前判断.
if( AddIt )
{
DropDownList ddl = new DropDownList();
ddl.AutoPostBack = true;
ddl.SelectedIndexChanged += new EventHandler(ddl_SelectedIndexChanged);
this.Form1.Controls.Add( ddl );
//子项要在父控件添加之后添加 这样ViewState才会保存 追赶
ddl.Items.Add(new ListItem("1","1") );
ddl.Items.Add(new ListItem("2","2") );
}
}
Web 窗体设计器生成的代码
private void Button1_Click(object sender, System.EventArgs e)
{
AddIt = true;
}
private void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
Response.Write("触发了下拉框的回传事件");
}
}
}
实现:using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace WebApplication1
{
/// <summary>
/// Dy01 的摘要说明。
/// </summary>
public class Dy01 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.HtmlControls.HtmlForm Form1;
private static bool AddIt = false;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
//点了添加按钮之后不会马上添加下拉框 应为Page_Load在ButtonClick之前执行, AddIt还是上次的值
//要想控件能触发事件 必须在PageLoad事件之前判断.
if( AddIt )
{
DropDownList ddl = new DropDownList();
ddl.AutoPostBack = true;
ddl.SelectedIndexChanged += new EventHandler(ddl_SelectedIndexChanged);
this.Form1.Controls.Add( ddl );
//子项要在父控件添加之后添加 这样ViewState才会保存 追赶
ddl.Items.Add(new ListItem("1","1") );
ddl.Items.Add(new ListItem("2","2") );
}
}
Web 窗体设计器生成的代码
private void Button1_Click(object sender, System.EventArgs e)
{
AddIt = true;
}
private void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
Response.Write("触发了下拉框的回传事件");
}
}
}
点击按钮后添加一个下拉框 下拉框可以触发事件。
1. 控件要在Load事件之前添加才能触发自己的回传事件。
2. 先添加父控件再添加它的子项,这样可以保存ViewState. 有一个周期追赶的过程。