簡體   English   中英

事件處理程序未調用

[英]Event handler does not get called

在以下代碼中,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頁面生命周期

對於動態控件,您需要在回發時重新創建它們 ,否則它們將不存在,並且附加事件處理程序將不會觸發。

動態contorls是在最好的創造PreInit頁面的事件。

如上所述這里

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

是的,不僅是您需要了解TRULEY的動態控件,這還是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);
}

然后只有它才能實現您想要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM