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 имущество.

Другие вопросы по тегам