Контроль событий не работает? - PullRequest
0 голосов
/ 20 августа 2009

Мне нужна кнопка управления и место на панели, но не работает?

protected void Button1_Click(object sender, EventArgs e)
    {
        Button btn = new Button();
        btn.Text = "Test button";
        Panel1.Controls.Add(btn);
        btn.Click += new EventHandler(btn_Click);
    }

    void btn_Click(object sender, EventArgs e)
    {
        Response.Write("<script>alert('test')</script>");
    }

Ответы [ 2 ]

1 голос
/ 20 августа 2009

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

Есть много похожих вопросов по этой теме, где вы можете найти подробности. Например, используйте следующий поиск:

0 голосов
/ 20 августа 2009

Убедитесь, что вы присвоили идентификатор кнопке, и убедитесь, что она одинакова при каждом ее создании.

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

Лучше всего будет отслеживать, нужно ли создавать кнопку или нет:

bool CreateButton
{
    get
    {
        if (ViewState["CreateButton"] == null)
            return false;

        return (bool)ViewState["CreateButton"];
    }
    set
    {
        ViewState["CreateButton"] = value;
    }
}

override void public CreateChildControls ()
{
    panel1.Controls.Clear ();

    if (CreateButton)
    {
       Button btn = new Button();
       btn.Text = "Test button";
       btn.ID = "CreatedButton"; // Note the ID here...
       Panel1.Controls.Add(btn);
       btn.Click += new EventHandler(btn_Click);
    }
}

protected void Button1_Click(object sender, EventArgs e)
{
    CreateButton = true;
    EnsureChildControls ();
}

void btn_Click(object sender, EventArgs e)
{
    Response.Write("<script>alert('test')</script>");
}

Нечто подобное должно работать на вас ...

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