Класс Sys.EventHandlerList
Обновлен: Ноябрь 2007
Создает для компонента словарь клиентских событий с именами событий в качестве ключей и связанными обработчиками в качестве значений.
Пространство имен: Sys
Наследует: Отсутствует
var e = new Sys.EventHandlerList();
Конструкторы
Имя |
Описание |
---|---|
Инициализирует новый экземпляр класса EventHandlerList. |
Элементы
Имя |
Описание |
---|---|
Присоединяет обработчик к указанному событию в экземпляре EventHandlerList и добавляет указанное событие в список, если его там еще нет. |
|
Возвращает единичный метод, который может быть вызван для последовательного вызова всех обработчиков для указанного события. |
|
Удаляет обработчик событий из указанного события в экземпляре 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>