Кнопка Asp.net, добавленная в UpdatePanel, не нажимает - PullRequest
1 голос
/ 25 марта 2011

У меня есть UpdatePanel, где в соответствии с операциями внутри этого UP заполняется.Я добавил несколько кнопок, но кнопки не запускают щелчки.

Я использовал код

Button b = new Button();
b.Click += new EventHandler(ClickMe);

...
void ClickMe(object sender, EventArgs e);

Где моя ошибка?

Ответы [ 3 ]

0 голосов
/ 25 марта 2011

Я думаю, что вы должны программно добавить триггер в UpdatePanel:

Код должен быть примерно таким (не проверено):

AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
trigger.ControlID = b.UniqueID;
trigger.EventName = "Click";
yourUpdPanel.Triggers.Add(trigger);

ScriptManager.RegisterAsyncPostBackControl(b);
0 голосов
/ 25 марта 2011

Вот пример, который работает.Вы должны быть уверены, что ваша кнопка добавляется при каждой обратной передаче.

Разметка:

<asp:ScriptManager runat="server" />
<asp:UpdatePanel ID="updatePanel" runat="server" EnableViewState="true">
    <ContentTemplate>
        <asp:Literal ID="litMessage" runat="server" />
    </ContentTemplate>
</asp:UpdatePanel>

Код позади:

protected override void CreateChildControls()
{
    base.CreateChildControls();

    Button button = new Button();
    button.Text = "Click me";
    button.Click += new EventHandler(button_Click);

    updatePanel.ContentTemplateContainer.Controls.Add(button);
}

protected void button_Click(Object sender, EventArgs e)
{
    litMessage.Text = ((Button)sender).Text + " clicked.";
}
0 голосов
/ 25 марта 2011

Забудьте о добавлении обработчиков событий программно через код - упростите свою жизнь и добавьте непосредственно в исходный код ASPX, например:

Это вызовет ваше событие "ClickMe" в вашем коде позади.

Если, однако, вы занимаетесь исключительно программированием, переопределите метод CreateChildControls, например, так:

   protected override void CreateChildControls()
    {
        b.Click += new EventHandler(MyClick);
        base.CreateChildControls();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...