Управление сервером теряет обработчик событий mousedown при обратном вызове - PullRequest
1 голос
/ 14 сентября 2009

У меня есть составной серверный элемент управления, который содержит div, к которому я прикрепляю обработчик события щелчка правой кнопкой мыши в методе Render (упрощено для ясности):

protected override void Render(HtmlTextWriter writer)
{
    base.Render(writer);

    writer.write(@"
    <script type=""text/javascript"">
    document.getElementById(""myDiv"").onmousedown = function(event)
    {
        e = FixupMouse(event);
        if (e.which == 3)
           // Do my stuff
    }
    </script>
    ";
}

Серверный элемент управления размещен на панели обновлений на странице aspx.

После начальной загрузки страницы все хорошо, но как только панель обновления выполняет обратный вызов, обработчик событий теряется. Я изменил функцию, чтобы просто сделать предупреждение, чтобы доказать, что это не код в функции.

Сам серверный элемент управления объявлен со следующим:

public class myBase : CompositeControl, INamingContainer

Я действительно в недоумении, почему это происходит ... какие-либо подсказки?

Приветствия

1 Ответ

1 голос
/ 16 сентября 2009

Хорошо, я отсортировал это ...

Казалось бы, метод, который я использовал, был неправильным, поэтому я изменил его на статический метод ScriptManager RegisterStartupScript и переместил его в OnPreRender следующим образом:

String script = @"
document.getElementById(""myDiv"").onmousedown = function(event)
{
    e = FixupMouse(event);
    if (e.which == 3)
        //... do stuff
};");

ScriptManager.RegisterStartupScript(this, this.GetType(), String.Format("{0}_MouseDown", this.ClientID), script, true);

Надеюсь, это поможет кому-то еще!

Приветствия

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