vb.net - net - Controlador de eventos que no se activa con AddHandler
lista de eventos en c# (1)
Tengo un formulario con aproximadamente 40 casillas de verificación. Una vez que se marca una casilla de verificación, la propiedad del control div debe cambiarse de "ninguno" a "bloque" o viceversa. No obtengo un error, pero el evento checkedchanged no se maneja. Aquí está el marcado:
<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>
Aquí está el código detrás:
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
Aquí está el submarino
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
Los controladores de eventos que adjunte en el bloque de código que ha etiquetado como "el código subyacente" solo serán efectivos para esa iteración de la página. Los controladores no se conservan en las devoluciones. Por lo tanto, cuando el usuario marca una casilla de verificación y la página se publica automáticamente en el servidor, los controladores de eventos no se han cableado.
Debe tener los controladores de eventos conectados en alguna etapa del ciclo de vida de la página antes de la etapa de administración de eventos de devolución de datos. Puede hacerlo en PageLoad o declarativamente en su marcado.
Aquí hay una pregunta similar.