Событие клика на пейджер Asp.net не срабатывает, в чем логика? - PullRequest
0 голосов
/ 25 декабря 2009

Что я не понимаю, так это то, что у меня есть функция pager_Create, вот так

public void createPager()
{   
    Div_Pager.Controls.Clear();

    ImageButton left = new ImageButton(); left.ID = "leftButton";// +new Random().Next();
    left.Click+=new ImageClickEventHandler(pager_Left_Click);
    left.ImageUrl = "http://" + Request.ServerVariables["SERVER_NAME"] + ":" + Request.ServerVariables["SERVER_PORT"] + "/Teknik_raporlar/left.bmp";

    ImageButton right = new ImageButton(); right.ID = "rightButton";// +new Random().Next();
    right.Click+=new ImageClickEventHandler(pager_Right_Click);
    right.ImageUrl = "http://" + Request.ServerVariables["SERVER_NAME"] + ":" + Request.ServerVariables["SERVER_PORT"] + "/Teknik_raporlar/right.bmp";

    Div_Pager.Controls.Add(left);
    Div_Pager.Controls.Add(right);

    if (int.Parse(ViewState["NOP"].ToString()) <= 1) // Number of Pages
    {
        Div_Pager.Visible = false;
    }
    else
    {
        Div_Pager.Visible = true;
        if (int.Parse(ViewState["CurrentPage"].ToString()) <= 1)
        {
            left.Visible = false;
        }
        if (int.Parse(ViewState["CurrentPage"].ToString()) >= int.Parse(ViewState["NOP"].ToString()))
        {
            right.Visible = false;
        }
    }
}


protected void pager_Left_Click(object sender, EventArgs e) 
{
    ViewState["CurrentPage"] = int.Parse(ViewState["CurrentPage"].ToString()) - 1;

}
protected void pager_Right_Click(object sender, EventArgs e)
{
    ViewState["CurrentPage"] = int.Parse(ViewState["CurrentPage"].ToString()) + 1;

}

и что я не понимаю, так это почему кнопки пейджера не срабатывают? Я имею в виду, что я создаю одни и те же кнопки каждый раз, когда создается пейджер. Так как это возможно. Какое отношение это имеет к рендерингу страниц? Мой упрощенный код выглядит так:

override Render()
{
 function1()
}
Page_Load()
{
 function1()
}
funtion1()
{
 createpager()
}

1 Ответ

1 голос
/ 25 декабря 2009

Вы создаете и воссоздаете динамические элементы управления, для нормальных элементов управления работает привязка событий если сделано, это Page_Load (), , но не для динамически созданных элементов управления.

вам нужно создать динамические элементы управления в PreInit (или, по крайней мере, OnInit () и прикрепить туда события. Динамические элементы управления должны быть созданы для каждого поста обратно.

Кроме того, идентификаторы кнопок должны быть новыми каждый раз, как left.ID = "leftButton"+random_no.ToString();

Вот рекомендации по динамическому созданию элементов управления.

http://www.singingeels.com/Articles/Dynamically_Created_Controls_in_ASPNET.aspx

Это длинная статья, но, пожалуйста, пройдите.

...