Событие нажатия кнопки не запускается в веб-частях при наследовании от других веб-частей - PullRequest
1 голос
/ 15 января 2010

У меня есть 3 веб-части, а именно WebPart-1.dwp, Webpart-2.dwp и WebPart-3.dwp.

У меня есть следующий сценарий:

WebPart-1 : WebPart-2 (Inheritance) 
WebPart-2 : WebPArt-3 (Inheritance) 
WebPart-3 : Microsoft.SharePoint.WebPartPages.WebPart (Inheritance) 

Если я загружаю WebPart-1, все веб-части загружаются правильно, но событие нажатия кнопки на WebPart-3 не запускается.

Мой код WebPart-3 выглядит так:

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

                m_MessageLabel = new Label();
                m_MessageLabel.ID = "m_MessageLabel";
                m_MessageLabel.Text = "Updated the settings successfully. You can now close this WebPart.";
                m_MessageLabel.Visible = false;

                m_UpdateButton = new Button();
                m_UpdateButton.ID = "m_UpdateButton";
                m_UpdateButton.Text = "Update";
                m_UpdateButton.CausesValidation = true;
                m_UpdateButton.ValidationGroup = ValidationGroup;
                m_UpdateButton.Click += new EventHandler(m_UpdateButton_Click);
}

void m_UpdateButton_Click(object sender, EventArgs e)
{
            //Some code here
}

protected override void RenderWebPart(HtmlTextWriter output)
{
                base.RenderWebPart(output);
                m_MessageLabel .RenderControl(output);
                m_UpdateButton.RenderControl(output);

}

Любая помощь по этому вопросу будет весьма заметна.

1 Ответ

1 голос
/ 15 января 2010

Проблема в том, что ваш обработчик событий не подключен слишком поздно.

Если вы сами не вызываете EnsureChildControls, CreateChildControls не вызывается перед рендерингом, и уже слишком поздно для кнопки вызвать ее событие.

Простое решение - вызвать EnsureChildControls в OnLoad

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