Класс Sys.EventHandlerList

Создает для компонента словарь клиентских событий с именами событий в качестве ключей и связанными обработчиками в качестве значений.

Пространство имен: Sys

Наследования: отсутствуют

var e = new Sys.EventHandlerList();

Имя

Описание

Конструктор Sys.EventHandlerList

Инициализирует новый экземпляр класса EventHandlerList.

Имя

Описание

Метод Sys.EventHandlerList.addHandler

Присоединяет обработчик к указанному событию в экземпляре EventHandlerList и добавляет указанное событие в список, если его там еще нет.

Метод Sys.EventHandlerList getHandler

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

Метод Sys.EventHandlerList.removeHandler

Удаляет обработчик событий из указанного события в экземпляре EventHandlerList.

Класс EventHandlerList используется для обработки клиентских версий в настраиваемых компонентах AJAX ASP.NET. Класс EventHandlerList предоставляет центральное расположение ссылки для событий и их обработчиков в блоке скрипта, компоненте или файле ресурсов скрипта.

ПримечаниеПримечание

Этот класс используется только при разработке клиентских компонентов. Он не предназначен для обработки событий вне области разработки компонентов и не применяется для создания событий DOM.

Чтобы вызвать событие, следует вызвать метод getHandlerс параметром id, которому задано значение для вызова идентификатора события. Затем вызывается метод, возвращенный getHandler. При этом все обработчики события будут вызваны по порядку.

В классе, производном от Sys.Component, доступ к экземпляру времени выполнения свойства EventHandlerList можно получить с помощью свойства events основного класса Sys.Component. Дополнительные сведения см. в разделе Свойство Sys.Component.events.

В следующем примере показано использование класса EventHandlerList в пользовательском элементе управления AJAX ASP.NET. Сведения о создании пользовательского элемента управления см. в разделе Создание пользовательских клиентских элементов управления AJAX, где элемент управления, представленный в данном примере, описан полностью.


// Register namespace.
Type.registerNamespace("Demo");

Demo.HoverButton = function(element) {

    Demo.HoverButton.initializeBase(this, [element]);

    // Create delegates in the Constructor.
    this._clickDelegate = null;
}

Demo.HoverButton.prototype = {

    // Bind and unbind to click event.
    add_click: function(handler) {
        this.get_events().addHandler('click', handler);
    },
    remove_click: function(handler) {
        this.get_events().removeHandler('click', handler);
    },

    initialize: function() {
        var element = this.get_element();

        // Bind handler to delegate.
        if (this._clickDelegate === null) {
            this._clickDelegate = Function.createDelegate(this, this._clickHandler);
        }
        Sys.UI.DomEvent.addHandler(element, 'click', this._clickDelegate);
        Demo.HoverButton.callBaseMethod(this, 'initialize');
    },
    _clickHandler: function(event) {
        var h = this.get_events().getHandler('click');
        if (h) h(this, Sys.EventArgs.Empty);
    },

    // Release resources before control is disposed.
    dispose: function() {
        var element = this.get_element();
        if (this._clickDelegate) {
            Sys.UI.DomEvent.removeHandler(element, 'click', this._clickDelegate);
            delete this._clickDelegate;
        }
        Demo.HoverButton.callBaseMethod(this, 'dispose');
    }
}

// Register the class.
Demo.HoverButton.registerClass('Demo.HoverButton', Sys.UI.Control);

// Notify the ScriptManager that this is the end of the script.
if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();



<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>EventHandlerList Example</title>
</head>
<body>
<form id="form1" runat="server">
    <div id="ResultDisplay"></div>

        <asp:ScriptManager runat="server" ID="ScriptManager01">
            <scripts>
               <asp:ScriptReference Path="HoverButton.js" />
            </scripts>
        </asp:ScriptManager>

        <script type="text/javascript">
            var app = Sys.Application;
            // Add the handler function to the pageLoad event.
            app.add_load(applicationLoadHandler);

            function applicationLoadHandler(sender, args) {
                $create(
                    Demo.HoverButton, 
                    {element: {style: {borderWidth: "2px"}}},
                    // Bind the start function to the click event.
                    {click: start},
                    null,
                    $get('Button1')
                    );
            }

            function start(sender, args) {
               alert("The start function handled the HoverButton click event.");
            }
        </script>

        <button type="button" id="Button1" value="HoverButton">
            HoverButton
        </button>
</form>
</body>
</html>


Показ: