El evento del botón de comando de control de usuario no se activa la primera vez

Soy bastante nuevo en asp.net y estoy experimentando con él para aprender el ciclo de vida de la página. Aquí hay un problema que no he podido resolver durante los últimos días.

Tengo una página de alojamiento (.aspx). Entonces tengo dos controles de usuario (.ascx). La página tiene un control de marcador de posición en el que carga los controles de usuario de uno en uno según el flujo de la aplicación. El primer control de usuario se carga al iniciar la aplicación. Tiene un botón "continuar". Hacer clic en el botón Continuar carga el segundo control de usuario que tiene dos botones: "Atrás" y "Enviar". Obviamente, el botón "Atrás" debería cargar el primer control de usuario de nuevo y el botón Enviar debería enviar los datos del formulario. Bastante simple.

El problema es que el controlador de eventos del botón de comando que tengo en el segundo control de usuario no se activa la primera vez. (Tengo un controlador de eventos para ambos botones). El evento de carga del control de usuario se activa pero luego ignora el clic del botón. Si vuelvo a hacer clic en él, se dispara. Vuelvo a cargar los controles en la página en cada page_load. Aquí hay un código relevante:

AddPlayer.aspx:

Page_Load vacío protegido (remitente del objeto, EventArgs e) {PlaceHolder1.Controls.Clear ();

        // Load the ctlInputPlayer control
        Control ctlToAdd = LoadControl("ctlInputPlayer.ascx", null);

        if (ctlToAdd != null)
        {
            _ctlInputPlayer = (ctlInputPlayer)ctlToAdd;
            _ctlInputPlayer.SendPlayerData += new EventHandler(ctlInputPlayer_SendPlayerData);
            PlaceHolder1.Controls.Add(_ctlInputPlayer);
        }

        // see if there is player data available in the view State
        PlayerData player = (PlayerData)ViewState["Player"];

        if (player != null)
        {
            ctlToAdd = LoadControl("ctlPlayerInfo.ascx", player);

            if (ctlToAdd != null)
            {
                _ctlPlayerInfo = (ctlPlayerInfo)ctlToAdd;
                _ctlPlayerInfo.SubmitPlayerData += new EventHandler(ctlPlayerInfo_SubmitPlayerData);
                PlaceHolder1.Controls.Clear();
                PlaceHolder1.Controls.Add(_ctlPlayerInfo);
            }
        }
    }

ctlPlayerInfo.ascx (segundo control de usuario):

ctlPlayerInfo.ascx.cs

protected void CommandBtn_Click (remitente del objeto, CommandEventArgs e) {switch (e.CommandName) {caso "Enviar":

                //submitPlayerData will fire here
                break;

            case "Back":
               // editplayer data will fire here
                break;
        }
    }

Page_Load vacío protegido (remitente del objeto, EventArgs e) {

// cargar datos de control aquí ....

}

El page_Load se activa cada vez, pero "CommandBtn_Click" no se activa después del primer clic. Tengo que hacerlo, haga clic de nuevo. No importa en qué orden haga clic en los botones.

Agradezco la ayuda. Avíseme si se necesitan más detalles. ¡Gracias!

preguntado el 23 de enero de 11 a las 14:01

1 Respuestas

Debe cargar sus controles de usuario cada vez en Page_Init y establecer la propiedad ID.

Respondido el 23 de enero de 11 a las 19:01

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.