Обработчик событий не запускается с использованием AddHandler - PullRequest
0 голосов
/ 16 октября 2010

У меня есть форма с около 40 флажков. Когда флажок установлен, свойство элемента управления div должно быть изменено с «none» на «block» или наоборот Я не получаю сообщение об ошибке, но отмеченное событие не обрабатывается. Вот разметка:

<tr>
    <td class="sectionSubHeader lightgrey">
        <asp:CheckBox ID="chkbxCOMAEFund" AutoPostBack="true" runat="server" />
        COM Academic Excellence Fund - Endowed
    </td>
</tr>
<tr>
    <td>
        <ul class="boldDetail">
            <li>Financial Need</li>
        </ul>
    </td>
</tr>
<tr>
    <td colspan="2" class="subSectionPad">Description..</td>
</tr>
<tr>
    <td colspan="2" class="subSectionPad">
        <asp:Label ID="lblCOMAEFund" runat="server"></asp:Label><br />
        <div id="divCOMAEFund" runat="server">
            <asp:TextBox ID="txtCOMAEFund" runat="server" TextMode="MultiLine" Columns="95" Rows="4"></asp:TextBox>
        </div>
    </td>
</tr>

Вот код:

Dim temp As String
Dim div As HtmlControl

For Each ctrl As Control In wizard.WizardSteps
    For Each subCtrl As Control In ctrl.Controls
        If TypeOf (subCtrl) Is CheckBox Then
            temp = subCtrl.ID.Replace("chkbx", "div")
            div = wizard.FindControl(temp)
            div.Style("display") = "none"
            AddHandler CType(subCtrl, CheckBox).CheckedChanged, AddressOf Chkbx_CheckChanged
        End If
    Next
Next

Вот суб

Private Sub Chkbx_CheckChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
    Dim temp As String
    temp = sender.ID
    temp = temp.Replace("chkbx", "div")
    Dim divCtrl As HtmlControl
    divCtrl = wizard1.FindControl(temp)

    If sender.Checked = True Then divCtrl.Style("display") = "block" Else divCtrl.Style("display") = "none"

End Sub

1 Ответ

7 голосов
/ 16 октября 2010

Обработчики событий, которые вы присоединяете в блоке кода, который вы пометили как «кодовый код», будут эффективны только для этой итерации страницы.Обработчики не сохраняются через постбэки.Поэтому, когда пользователь устанавливает флажок, и страница автоматически отправляется обратно на сервер, обработчики событий не были подключены.

На каком-то этапе в * 1003 необходимо подключить обработчики событий* жизненный цикл страницы до этапа обработки события обратной передачи.Вы можете сделать это в PageLoad или декларативно в своей разметке.

Вот аналогичный вопрос.

...