2010-01-04 2 views
5

У меня есть кнопка ASP.net btnAccept в панели управления, которая будет отображаться на кнопке Click of Another в элементе управления modalViewextender.ASP.net Button Server Side click not firing

Контроль btnAccept onclick не срабатывает. Но если я положил onClientClick, он выстрелил. Но я хочу работать onClick на сервере. Я не получаю никаких ошибок, и я не могу это понять.

Любая помощь будет принята с благодарностью.

Ниже приведен код для кнопки

<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> 

Благодаря

+0

Я не знаком с modalviewextender. Вы имеете в виду ModalPopupExtender: http://www.asp.net/ajax/ajaxcontroltoolkit/samples/modalpopup/modalpopup.aspx? Если бы вы не могли опубликовать ссылку на элемент управления? –

+0

Вы используете свойство .Visible? –

+0

Аналогичная проблема: http://stackoverflow.com/questions/1785764/asp-net-control-events-not-firing-inside-repeater –

ответ

4

не видя кода (который действительно поможет нам), я собираюсь предположить, что вы динамически добавлять свой btnAccept к страницы, а не воссоздать его правильно при обратной передаче.

Если вы не создаете btnAccept во время фазы Init жизненного цикла, вам придется отслеживать его ViewState вручную. Если вы не создаете его до PreRender(), то вы пройдете точку, в которой были обработаны обработчики событий.

Если вы разместите какой-то код, было бы намного легче диагностировать.

+0

womp, я только что обновил свой вопрос с помощью кода. Благодарю. – acadia

+0

Вы устанавливаете «OkButtonID» на модальном всплывающем расширении где угодно? Как выглядит ваш код? И, как сказал Стив, autoeventwireup установлен на false? – womp

1

Возможно, директива страницы имеет эту настройку: eventwireup = "false". Если это так, событие не срабатывает.

Как womp уже сказано - было бы полезно, чтобы увидеть код. Не могли бы вы включить директиву страницы в свой пост?

0

Удивительно, если у вас может возникнуть проблема с выполнением слишком многих вещей на стороне клиента, что ваше состояние представления становится недействительным, и это то, что блокирует вызов на стороне сервера от обжига.

Intermittent Invalid Viewstate Error in ASP.NET Web pages также может помочь. Вы подтвердили, что есть запрос на сервер?

1
  1. Ваш элемент управления не имеет назначенного обработчика OnClick.
  2. У вас есть обработчики OnClick, назначенные для тегов <input>, но это не сработает; во-первых, любые теги, которые вызывают действия на стороне сервера, должны иметь набор runat="server"; во-вторых, вместо этого вы должны использовать <asp:TextBox>.