在下面的代码中,asp不进入操作侦听器(Button1_Click)。有人能帮上忙吗?
protected void Project_Click(object sender, EventArgs e)
{
Courses.ActiveViewIndex = 0;
String ConnStr = ConfigurationManager.ConnectionStrings["MyRuMoR"].ToString();
SqlConnection conn = new SqlConnection(ConnStr);
conn.Open();
SqlCommand cmd = new SqlCommand("ViewProjects", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@course_code", "PHYS305");
SqlDataReader rdr = cmd.ExecuteReader();
int c = 1;
while (rdr.Read())
{
String name = rdr.GetString(rdr.GetOrdinal("name"));
int p_id = rdr.GetInt32(rdr.GetOrdinal("p_id"));
LinkButton lb = new LinkButton();
lb.ID = p_id.ToString();
lb.Text = "Project " + c + " is: " + name;
form1.Controls.Add(lb);
lb.Click += new EventHandler(this.Button1_Click);
c++;
}
conn.Close();
}
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write("Hello");
}发布于 2011-12-25 23:49:03
是的,不仅仅是理解动态控件,你还需要理解它们,这是ASP.NET团队成员写的关于它们的最好的文章之一。
TRULY UNDERSTANDING DYNAMIC CONTROLS
发布于 2011-12-25 20:25:45
你需要阅读ASP.NET page lifecycle上的资料。
对于动态控件,需要在回发时重新创建它们,否则它们将不存在,附加的事件处理程序也不会激发。
最好在页面的PreInit事件上创建动态控件。
如上所述,here
protected virtual void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
//your code
}发布于 2011-12-25 23:27:14
您必须将创建动态控件的全部或部分代码放在页面生命周期的Pre_Init事件中,如下所示
protected void Page_PreInit(object sender, EventArgs e)
{
LinkButton lb = new LinkButton();
lb.ID = p_id.ToString();
lb.Text = "Project " + c + " is: " + name;
form1.Controls.Add(lb);
lb.Click += new EventHandler(this.Button1_Click);
}然后,只有它才能实现你想要的。
https://stackoverflow.com/questions/8629562
复制相似问题