2010-01-04 35 views
5

Tengo un botón ASP.net btnAceptar en un panel de control que se mostrará al hacer clic en otro botón en un control modalViewextender.Botón ASP.net Lado del servidor no dispara

El btnAccept control onclick no se está disparando. Pero si pongo ClientClick, está disparando. Pero quiero trabajar onClick en el extremo del servidor. No recibo ningún error y no soy capaz de resolver esto.

Cualquier ayuda será muy apreciada.

A continuación se muestra el código para el botón

<cc1:ModalPopupExtender ID="mdldigiSign" runat="server" Enabled="True" 
    BackgroundCssClass="modalBackground" TargetControlID="pnlSign" 
    PopupControlID="pnlSign" CancelControlID="lblCloseSign" 
    OnCancelScript="hideDigiSignDialog();" DynamicServicePath=""> 
</cc1:ModalPopupExtender> 
<asp:Panel ID="pnlSign" runat="server"> 
    <table border="0" class="SubMenu" align=center > 
     <tr> 
      <td align="right" valign="top" style="height: 30px"> 
       <label id="lblCloseSign" runat="server" title="Close"> 
        <a href="#"> 
         <img src="images/close_button.gif" border="0" 
           alt="Close" /> 
        </a> 
       </label> 
      </td> 
     </tr> 
     <tr><td>Respondent's Signature</td></tr> 
     <tr> 
      <td align=center > 
       <OBJECT id=esCapture1 
        classid=clsid:84C046A7-4370-4D91-8737-87C12F4C63C5 
        width="150" height="80" codebase="websignax.cab" VIEWASTEXT> 
        <param name="useslibrary" value="websignAx"> 
        <param name="useslibrarycodebase" value="websignax.cab"> 
        <param name="useslibraryversion" 
         value="7,1,0,1">IntegriSign Signature Control 
       </OBJECT> 
       <br /> 
       <br /> 
       <INPUT onclick=signNow() type=button value="StartSign" 
        name=B1 id=B1> 
       &nbsp;&nbsp; 
       <input type="button" value="GetData" name="B2" 
        onclick=getData()> 
       <br /> 
       <asp:HiddenField ID="hdsignature" runat=server /> 
      </td> 
     </tr> 
     <tr> 
      <td align="center"> 
       <asp:Button ID="btnAccept" runat="server" 
        Text="Accept Settlement" /> 
      </td> 
     </tr> 
    </table> 
</asp:Panel> 

Gracias

+0

No estoy familiarizado con modalviewextender. ¿Te refieres a ModalPopupExtender: http://www.asp.net/ajax/ajaxcontroltoolkit/samples/modalpopup/modalpopup.aspx? Si no, ¿podrías publicar un enlace al control? –

+0

¿Está utilizando la propiedad .Visible? –

+0

Un problema similar: http://stackoverflow.com/questions/1785764/asp-net-control-events-not-firing-inside-repeater –

Respuesta

4

sin ver ningún código (que realmente nos ayudaría), voy a suponer que va a agregar dinámicamente su btnAccept a la página, y no volver a crearlo correctamente en la devolución.

Si no está creando btnAccept durante la fase Init del ciclo de vida, tendrá que rastrear su ViewState manualmente. Si no lo está creando hasta PreRender(), habrá pasado el punto en el que los manejadores de eventos han disparado.

Si publica un código sería mucho más fácil de diagnosticar.

+0

womp, Acabo de actualizar mi pregunta con el código. Gracias. – acadia

+0

¿está configurando el "OkButtonID" en el extensor modal emergente en cualquier lugar? ¿Cómo se ve el código subyacente? Y como mencionó Steve, ¿está autoeventwireup configurado en falso? – womp

1

Probablemente la directiva de la página tenga esta configuración: eventwireup = "false". Si esto es cierto, el evento no se disparará.

Como he dicho ya, sería útil ver el código. ¿Podría incluir la directiva de la página en su publicación?

0

Me pregunto si puede tener un problema con hacer demasiadas cosas en el lado del cliente que su estado de vista se está volviendo inválido y eso es lo que está bloqueando la llamada del lado del servidor de la activación.

Intermittent Invalid Viewstate Error in ASP.NET Web pages también pueden ayudar. ¿Has confirmado que hay una solicitud para llegar al servidor?

1
  1. Su control no tiene asignado un controlador OnClick.
  2. Tiene controladores OnClick asignados para las etiquetas <input>, pero eso no funcionará; primero, cualquier etiqueta que invoque acciones del lado del servidor debe tener runat="server" establecido; segundo, debe usar un control <asp:TextBox> en su lugar.
Cuestiones relacionadas