2010-04-23 2 views
1

У меня есть простой пользовательский элемент управления, с помощью этого кода:ASP.NET: Кнопка в пользовательский элемент управления не проводки обратно

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Pager.ascx.cs" Inherits="Pager" %> 
<table style="width: 100%;"> 
    <tr> 
     <td runat="server" id="PageControls"> 
      <!-- This button has the problem: --> 
      <asp:Button ID="btnPrevPage" runat="server" Text="&larr;" OnClick="btnPrevPage_Click" /> 
      Page 
      <asp:DropDownList runat="server" ID="ddlPage" AutoPostBack="true" OnSelectedIndexChanged="ddlPage_SelectedIndexChanged" /> 
      of 
      <asp:Label ID="lblTotalPages" runat="server" /> 
      <!-- This button has the problem: --> 
      <asp:Button ID="btnNextPage" runat="server" Text="&rarr;" OnClick="btnNextPage_Click" /> 
     </td> 
     <td align="right" runat="server" id="itemsPerPageControls"> 
      <asp:Literal ID="perPageText1" runat="server" /> 
      <asp:DropDownList ID="ddlItemsPerPage" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlItemsPerPage_SelectedIndexChanged" /> 
      <asp:Literal ID="perPageText2" runat="server" /> 
     </td> 
    </tr> 
</table> 

Как вы можете видеть, 2 кнопки проводную кликать события, которые определены правильно код-сзади.

Теперь, вот как я включаю экземпляр элемента управления на моей странице:

<uc:Pager ID="Pager1" runat="server" TotalRecords="100" DisplayItemsPerPage="true" 
     ItemsPerPageChoices="10,25,50,100" ItemsPerPageFormatString="Sessions/Page: {0}" 
     PageSize="25" OnPageChanged="PageChanged" OnPageSizeChanged="PageChanged" /> 

Я заметил, однако, что 2 кнопки в моем пользовательский элемент управления не вызывает запись назад при нажатии. Однако выпадающий список вызывает обратную передачу. Вот тонированное HTML:

<table style="width: 100%;"> 
    <tr> 
     <td id="ctl00_MainContent_Pager1_PageControls" align="left"> 
      <!-- No onclick event! Why? --> 
      <input type="submit" name="ctl00$MainContent$Pager1$btnPrevPage" value="←" id="ctl00_MainContent_Pager1_btnPrevPage" /> 
      Page 
      <select name="ctl00$MainContent$Pager1$ddlPage" onchange="javascript:setTimeout('__doPostBack(\'ctl00$MainContent$Pager1$ddlPage\',\'\')', 0)" 
       id="ctl00_MainContent_Pager1_ddlPage"> 
       <option value="1">1</option> 
       <option selected="selected" value="2">2</option> 
       <option value="3">3</option> 
       <option value="4">4</option> 
       <option value="5">5</option> 
       <option value="6">6</option> 
      </select> 
      of <span id="ctl00_MainContent_Pager1_lblTotalPages">6</span> 
      <!-- No onclick event! Why? --> 
      <input type="submit" name="ctl00$MainContent$Pager1$btnNextPage" value="→" id="ctl00_MainContent_Pager1_btnNextPage" /> 
     </td> 
     <td id="ctl00_MainContent_Pager1_itemsPerPageControls" align="right"> 
      Sessions/Page: 
      <select name="ctl00$MainContent$Pager1$ddlItemsPerPage" onchange="javascript:setTimeout('__doPostBack(\'ctl00$MainContent$Pager1$ddlItemsPerPage\',\'\')', 0)" 
       id="ctl00_MainContent_Pager1_ddlItemsPerPage"> 
       <option value="10">10</option> 
       <option selected="selected" value="25">25</option> 
       <option value="50">50</option> 
       <option value="100">100</option> 
      </select> 
     </td> 
    </tr> 
</table> 

И, как вы можете видеть, нет OnClick не атрибут, оказываемые во входных элементах кнопки. Почему нет?

EDIT

Ронни, почему ты такой тупой ??? <input type="submit" /> не использует javascript для отправки формы!

ответ

6

Это не Щелчок даже на кнопках, потому что они вводят тип = submit и поэтому не требуют javascript, чтобы вызвать обратную передачу.

У вас есть какие-либо обновления на вашей странице, что может вызвать проблемы?

У вас есть какие-либо валидаторы на странице, которые могут остановить обратную передачу? Возможно, вы захотите установить CausesValidation на false, если это так.

Вы установили точки останова в Page_Load вашей страницы и управления, а не только в событии Click, чтобы проверить, что работает.

Вы сделали что-нибудь, связанное с отключением ViewState?

+0

У меня была проверка jQuery на странице. Добавлен cssclass = "отменить" к кнопкам, чтобы они не вызывали проверку. Я не видел ошибок проверки, потому что они отображаются в модальном диалоговом окне, которое было скрыто. –

Смежные вопросы