Pregunta

Estoy llamando a mi control de usuario en una página web dinámicamente. Por primera vez, cuando hago clic en el botón del control del usuario, el evento no se activa. Cuando hago clic en el mismo por segunda vez, los eventos se activan ...

¿Puede alguien ayudarme?

¿Fue útil?

Solución

El ID de cliente del control se deriva del ID de todos los controles que están marcados con INamingContainer . Por lo tanto, asegúrese de que TODOS los controles en la jerarquía tengan una ID fija.

Por ejemplo, si tiene un control de Botón dentro de un Repetidor, la ID del botón y el repetidor se concatenan para hacer la ID del cliente para el botón. Por lo tanto, tanto el repetidor como el botón deben tener la misma ID en todas las devoluciones de datos.

Puede comparar el HTML de la primera solicitud con el HTML de la segunda solicitud para determinar rápidamente si este es el problema.

Otros consejos

Parece que la conexión al evento OnClick del botón no ocurre en cada carga de página, lo cual es obligatorio.

¿Puede garantizar que la conexión se realiza cuando agrega el control y después de una devolución de llamada a la página? Siempre pongo mis ganchos de eventos en los controladores de eventos Page_Init o Page_Load y fuera de cualquier comprobación de devolución. Intente colocar un punto de interrupción en la conexión del controlador y verifique si el punto de interrupción recibe un "golpe". dos veces.

Una conexión de evento para un botón sería similar a:

protected void Page_Load(object sender, EventArgs e)
{
    btnSearch.Click += new EventHandler(btnSearch_Click); // breakpoint on this line
}

Asigne una ID para su control creado dinámicamente; de ??lo contrario, no se activarán eventos.

¿Está esperando la descarga de la página completa antes de presionar el botón?

Los eventos son funciones javascript ocultas por ASP.Net en la página, que quizás no estén presentes al momento de hacer clic.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top