OnCheckedChanged caso no disparar en GridView en absoluto
-
18-09-2019 - |
Pregunta
Tengo un GridView con un CheckBox asp en un TemplateField. El TemplateField se define como sigue:
<asp:TemplateField HeaderText="HeaderName">
<ItemTemplate>
<asp:CheckBox ID="checkBoxId" runat="server" OnCheckedChanged="MyCheckChangedMethod" AutoPostBack="true"/>
</ItemTemplate>
</asp:TemplateField>
Cuando ejecuto mi proyecto web con un punto de interrupción en el interior MyCheckChangedMethod y haga clic en la casilla de verificación no pasa nada. El punto de interrupción no se ve afectado. Mi depurador de Visual Studio está en marcha.
Además, tengo AutoEventWireup = True en mi página de defnición así que no tengo que enlazar manualmente el evento. Nunca he tenido un problema de hacerlo de esta manera antes. Tengo un botón en la misma configuración de página de la misma manera con un evento de clic y el punto de interrupción se golpeó bien en eso.
¿Alguna idea?
Solución
El evento de devolución para el control de casilla de verificación no se disparará correctamente porque es dentro de un GridView que destroza el ID del control.
Si necesita la casilla de verificación para reflejar los datos se puede utilizar el CampoCasillaVerificación objeto y se unen de esa manera.
Si necesita que realice una acción para la fila, es posible que desee ver en la ButtonField objeto usando la fuerte CommandName strong> propiedad <> RowCommand strong> evento <
Hay formas de acceder a las casillas de verificación en el lado del servidor GridView .
Otros consejos
Es necesario añadir en la etiqueta AutoPostback = True
asp:CheckBox
.
El problema se produce cuando se llama DataBind
antes del evento de control está disparando.
Si llama DataBind
en Page_Load
lo puso en
if (!isPostBack) {}
y llamada DataBind
en el propio controlador de eventos.
intento:
<asp:CheckBox ID="checkBoxId" runat="server" AutoPostBack=true OnCheckedChanged="MyCheckChangedMethod"/>
Asegúrese de que la página aspx tiene CodeFile = "YOUR_FILE.aspx.cs" en la parte superior.
También ver por que su MyCheckChangedMethod función se define como
Función debe tener object sender, EventArgs e.
public void MyCheckChangedMethod(object sender, EventArgs e)
{
bool b = false;//your data here
}
También asegúrese de que el web.config ha de depuración se establece en true (piense lo ha hecho).