asp.net/vb.net System.Web.UI.WebControls.RepeaterItemEventArgs вопрос
Я действительно новичок в asp.net, поэтому, пожалуйста, прости меня, если это кажется очень простым вопросом. У меня есть страница asp.net, которая содержит ретранслятор. Вот код:
<div class="formRow">
<asp:Repeater ID="uxStudentFormActive" runat="server">
<ItemTemplate>
<span style="font-weight:bold;" ><asp:Literal ID="uxFormName" runat="server" Text="#" /></span><br />
<asp:TreeView ID="uxFormHistoryList" runat="server" Target="_blank" />
</ItemTemplate>
</asp:Repeater>
</div>
Вот саб на моей странице vb.net, который обрабатывает uxStudentFormActive.ItemDataBound
:
Protected Sub uxStudentFormActive_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles uxStudentFormActive.ItemDataBound
Dim dr As DataRowView = CType(e.Item.DataItem(), DataRowView)
If Convert.ToInt32(dr("FormId")) = 29 Then
...
End If
End Sub
Я не совсем уверен, как aspx
страница взаимодействует со страницей vb.net. У меня вопрос, как мне узнать, как, где значения для e
которые передаются на саб uxStudentFormActive_ItemDataBound
на моей странице vb.net приходят? Заранее спасибо.
2 ответа
Спасибо @Jack за предоставленную мне дополнительную информацию об этом. Извините, если мой ОП не был более понятным, я понял, что значения поступают со страницы.aspx, я фактически спрашивал, где значения, которые передаются как e
в мой саб устанавливаются, как e
заполняется данными. Ответ пришел от просмотра идентификатора ретранслятора для ретранслятора, о котором я спрашиваю, uxStudentFormActive
, Когда я искал этот идентификатор ретранслятора мой код vb.net позади, я обнаружил, что источник данных для него был определен и связан в Page_Load
к югу. Отслеживание этого ведет меня к хранимой процедуре в моей базе данных, которая передает данные сеанса и e
устанавливается на результаты хранимой процедуры.
Из этой статьи 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
ложно и вручную подключить события, как подробно описано в ссылке на статью MSDN на AutoEventWireup
имущество.