Обработчик событий не вызывается - PullRequest
2 голосов
/ 25 декабря 2011

В следующем коде 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");
    }

Ответы [ 3 ]

4 голосов
/ 25 декабря 2011

Вам нужно прочитать о жизненном цикле ASP.NET страницы .

Когда дело доходит до динамических элементов управления, вам необходимо воссоздать их при обратной передаче, иначе они не будут существовать, и присоединенный обработчик событий не сработает.

Динамические контуры лучше всего создавать на событии PreInit страницы.

Как описано здесь :

protected virtual void OnPreInit(EventArgs e)
{
   base.OnPreInit(e);
   //your code
}
2 голосов
/ 25 декабря 2011

Да, не просто понимание динамических элементов управления, которые вам нужны, чтобы TRULEY понимал их Это одна из лучших статей о них, написанная членом команды ASP.NET.

НАСТОЯЩЕЕ ПОНИМАНИЕ ДИНАМИЧЕСКОГО УПРАВЛЕНИЯ

0 голосов
/ 25 декабря 2011

Вы должны поместить весь или часть вашего кода, который создает динамические элементы управления в событие 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);
}

Тогда только он достигнет того, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...