事件处理程序没有被调用



在下面的代码中,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");
    }

你需要仔细阅读ASP。. NET页面生命周期。

当涉及到动态控件时,您需要在回发时重新创建它们,否则它们将不存在并且附加的事件处理程序将不会触发。

动态控件最好在页面的PreInit事件上创建。

如下所述:

protected virtual void OnPreInit(EventArgs e)
{
   base.OnPreInit(e);
   //your code
}

是的,不只是理解动态控件,你需要真正理解它们这是ASP撰写的关于它们的最好的文章之一。. NET团队成员。

真正理解动态控件

您必须将创建动态控件的全部或部分代码放在页面生命周期的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);
}

相关内容

  • 没有找到相关文章

最新更新