С этой статьи MSDN об обработке событий в ASP.Net:
События [в ASP.Net] основаны на модели делегата ... Делегат - это тип, который содержит ссылку на метод ... Событие - это сообщение, отправленное объектом для сигнализации о возникновении действия. , Действие может быть вызвано взаимодействием с пользователем, таким как нажатие кнопки, или оно может быть вызвано некоторой другой программной логикой, такой как изменение значения свойства. Объект, который вызывает событие, называется отправителем события ... Данные, связанные с событием, могут быть предоставлены через класс данных события.
В вашем случае класс данных события равен RepeaterItemEventArgs
.
Чтобы ответить на событие, вы определяете метод обработчика события в получателе события. Этот метод должен соответствовать подписи делегата для события, которое вы обрабатываете. В обработчике событий вы выполняете действия, которые требуются при возникновении события, такие как сбор пользовательского ввода после того, как пользователь нажимает кнопку. Чтобы получать уведомления о возникновении события, ваш метод-обработчик события должен подписаться на событие.
Читая это, вы могли бы сказать: "Ну, это хорошо, но что это значит?" В вашем проекте у вас, вероятно, есть набор свойств в верхней части страницы .aspx с именем AutoEventWireup
. Вероятно, он установлен на true
. Это свойство делает то, что кажется: оно автоматически связывает ваши события, так что вам не нужно. Вот как ваша страница .aspx знает, как взаимодействовать с файлом code-behind.
На вашей странице .aspx у вас есть управление репитером. В вашем файле code-behind у вас есть метод обработчика событий. Поскольку для AutoEventWireup
установлено значение true, эти две вещи автоматически связываются вместе, если ваша сигнатура метода обработчика событий совпадает с сигнатурой делегата для этого события. В этом случае это событие ItemDataBound
.
К вашему первоначальному вопросу, откуда берутся значения e
? От отправителя!
Protected Sub uxStudentFormActive_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles uxStudentFormActive.ItemDataBound
В сигнатуре этого метода у вас есть два параметра: sender
и e
. Как описано в приведенной выше цитате, sender
- это объект, который вызывает событие. В вашем случае это RepeaterItem
. Поскольку повторитель, вероятно, содержит много таких объектов, событие может быть вызвано несколько раз. Аргумент события, e
, генерируется из sender
или RepeaterItem, который был привязан к данным и вызвал событие.
Вы можете узнать больше о RepeaterItemEventArgs
и данных, доступных в MSDN .
В качестве примечания вы можете установить для AutoEventWireup
значение false и вручную связать события, как подробно описано в ссылке на статью MSDN в свойстве AutoEventWireup
.